lang 0.2 → 0.2.1
raw patch · 3 files changed
+31/−9 lines, 3 files
Files
- Lang.hs +7/−2
- Lang/Read.hs +23/−6
- lang.cabal +1/−1
Lang.hs view
@@ -36,8 +36,13 @@ _ -> case 讀 l of Just (x, "") -> do let it = 算 x e- putStrLn (示 it)- return (e, it)+ case it of+ W誤 _ -> do+ putStrLn "ERROR"+ return (e, it)+ _ -> do+ putStrLn (示 it)+ return (e, it) _ -> do parseError return _s
Lang/Read.hs view
@@ -73,7 +73,20 @@ r _ _ = Nothing r映 :: Reader W物-r映 = error "WIP"+r映 m rs = do+ '(':rs <- return rs+ (x, rs) <- r甲 MappingNil m rs+ return (W映 (Y物映 x), rs)+ where+ r甲 :: Mapping W物 W物 -> Reader (Mapping W物 W物)+ r甲 物 m ('(':rs) = do+ (k, rs) <- r m rs+ (_, rs) <- r空 m rs+ (v, ')':rs) <- r m rs+ (_, rs) <- r空 m rs+ r甲 (mappingSet 物 k v) m rs+ r甲 物 m (')':rs) = return (物, rs)+ r甲 物 m _ = Nothing r周 :: Reader W物 r周 m xs = let (b, as, bs) = r甲 xs in@@ -95,9 +108,6 @@ r甲 (x:xs) = let (b, as, bs) = r甲 xs in (b, x:as, bs) r甲 "" = (False, "", "") -r式 :: Reader String-r式 m ('名':'(':xs) = error "WIP"- r機 :: (X形 -> W物 -> a) -> Reader a r機 re m rs = do '(':rs <- return rs@@ -114,7 +124,14 @@ rs a (' ':xs) = rs (' ':a) xs r物列 :: Reader (List W物)-r物列 = error "WIP"+r物列 m (')':xs) = pure ([], xs)+r物列 m (' ':xs) = r物列 m xs+r物列 m rs = r m rs >>= \(x, rs) -> r物列 m rs >?= \(xs, rs) -> (x:xs, rs) r首尾 :: Reader W物-r首尾 = error "WIP"+r首尾 m (')':xs) = pure (空, xs)+r首尾 m (' ':'-':' ':rs) = do+ (x, ')':rs) <- r m rs+ return (x, rs)+r首尾 m (' ':xs) = r首尾 m xs+r首尾 m rs = r m rs >>= \(x, rs) -> r首尾 m rs >?= \(xs, rs) -> (首尾 x xs, rs)
lang.cabal view
@@ -2,7 +2,7 @@ -- see http://haskell.org/cabal/users-guide/ name: lang-version: 0.2+version: 0.2.1 synopsis: A Lisp -- description: homepage: 语.ml