module FP.Prelude.DSL where import FP.Prelude.Core -- 0: dolla infixr 0 ◇$ -- 3: arrows infixr 3 ◇⇨ -- (Arrow a) ⇒ a → a → a -- 9: application infixl 9 ◇⋅ -- (⋅) ∷ (Apply a) ⇒ a → a → a -- # DSLs class Arrow a where (◇⇨) ∷ a → a → a class Apply a where (◇⋅) ∷ a → a → a class Tup a where tup ∷ [a] → a (◇$) ∷ (Apply e) ⇒ e → e → e (◇$) = (◇⋅) (◇⋅|) ∷ (Apply e) ⇒ e → [e] → e (◇⋅|) = foldl (◇⋅)