From 0f958b08b3446a866418aa485bb60c208d952033 Mon Sep 17 00:00:00 2001 From: Ben Culkin Date: Sat, 8 Oct 2022 14:47:21 -0400 Subject: Add a whole bunch of Optics This adds a whole bunch of types/functions related to optics. With this batch, I've mainly gone for the concrete representation types, instead of var Laarhoven or profunctor representations. The concrete ones require less infrastructure, though they are not as easy to compose There's also a number of misc. things in here --- src/main/java/bjc/optics/Optic.java | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/main/java/bjc/optics/Optic.java (limited to 'src/main/java/bjc/optics/Optic.java') diff --git a/src/main/java/bjc/optics/Optic.java b/src/main/java/bjc/optics/Optic.java new file mode 100644 index 0000000..389da21 --- /dev/null +++ b/src/main/java/bjc/optics/Optic.java @@ -0,0 +1,32 @@ +/* + * esodata - data structures and other things, of varying utility + * Copyright 2022, Ben Culkin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package bjc.optics; + +/** + * General interface for optics of varying sorts + * + * @author bjcul + * + * @param The first item the optic is used on + * @param The second item the optic is used on + * @param The first item the optic focuses on + * @param The second item the optic focuses on + */ +public interface Optic { + // Marker interface +} -- cgit v1.2.3