diff options
Diffstat (limited to 'src/Lib.hs')
-rw-r--r-- | src/Lib.hs | 29 |
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 |