aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/lux/abstract/monad/free.lux
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/source/lux/abstract/monad/free.lux67
1 files changed, 0 insertions, 67 deletions
diff --git a/stdlib/source/lux/abstract/monad/free.lux b/stdlib/source/lux/abstract/monad/free.lux
deleted file mode 100644
index 7a9efbeea..000000000
--- a/stdlib/source/lux/abstract/monad/free.lux
+++ /dev/null
@@ -1,67 +0,0 @@
-(.module:
- [lux #*]
- [///
- [functor (#+ Functor)]
- [apply (#+ Apply)]
- [monad (#+ Monad)]])
-
-(type: #export (Free F a)
- {#.doc "The Free Monad."}
- (#Pure a)
- (#Effect (F (Free F a))))
-
-(implementation: #export (functor dsl)
- (All [F] (-> (Functor F) (Functor (Free F))))
-
- (def: (map f ea)
- (case ea
- (#Pure a)
- (#Pure (f a))
-
- (#Effect value)
- (#Effect (\ dsl map (map f) value)))))
-
-(implementation: #export (apply dsl)
- (All [F] (-> (Functor F) (Apply (Free F))))
-
- (def: &functor (..functor dsl))
-
- (def: (apply ef ea)
- (case [ef ea]
- [(#Pure f) (#Pure a)]
- (#Pure (f a))
-
- [(#Pure f) (#Effect fa)]
- (#Effect (\ dsl map
- (\ (..functor dsl) map f)
- fa))
-
- [(#Effect ff) _]
- (#Effect (\ dsl map
- (function (_ f) (apply f ea))
- ff))
- )))
-
-(implementation: #export (monad dsl)
- (All [F] (-> (Functor F) (Monad (Free F))))
-
- (def: &functor (..functor dsl))
-
- (def: (wrap a)
- (#Pure a))
-
- (def: (join efefa)
- (case efefa
- (#Pure efa)
- (case efa
- (#Pure a)
- (#Pure a)
-
- (#Effect fa)
- (#Effect fa))
-
- (#Effect fefa)
- (#Effect (\ dsl map
- (\ (monad dsl) join)
- fefa))
- )))