aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Lib.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Lib.hs')
-rw-r--r--src/Lib.hs29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/Lib.hs b/src/Lib.hs
new file mode 100644
index 0000000..4f4d2f3
--- /dev/null
+++ b/src/Lib.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE LambdaCase #-}
+
+module Lib
+ ( fromJotter
+ ) where
+
+import Term
+
+data State = L | R
+
+s :: Term
+s = Abs (Abs (Abs (App (App (Idx 2) (Idx 0)) (App (Idx 1) (Idx 0)))))
+
+k :: Term
+k = Abs (Abs (Idx 1))
+
+i :: Term
+i = Abs (Idx 0)
+
+-- reverse wouldn't be needed if [0F] instead of [F0]
+fromJotter :: String -> Term
+fromJotter = go L . reverse
+ where
+ go L ('0' : xs) = App s (go R xs)
+ go R ('0' : xs) = App (go L xs) s
+ go L ('1' : xs) = App k (go R xs)
+ go R ('1' : xs) = App (go L xs) k
+ go d (_ : xs) = go d xs
+ go _ [] = i