Skip to content
This repository was archived by the owner on May 3, 2019. It is now read-only.

Commit ea31d47

Browse files
committed
.
1 parent 8b5468f commit ea31d47

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

Lang/Lang.hs

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ import Lang.Cast
1818
import Lang.Common
1919
import Mapping
2020

21-
wip = error "WIP"
22-
2321
infixr 0 ?
2422
W誤 _ ? _ = Nothing
2523
_ ? x = x
@@ -195,7 +193,7 @@ m n c x = (建名 n, 引機 (界機 (MkJJ界機物 n ce f (建參 ce) (建列[
195193
W構 _ xs -> Just (列To物 xs)
196194
_ -> Nothing)),
197195
(fM["","未算"]1(\[x] -> x? case x of
198-
W名 x -> wip
196+
W名 x -> error "WIP"
199197
_ -> Nothing)),
200198
(建名[""], WMappingNil (建列[建名["x"]]) (建列[建界名[""], 建列[建界名["","未算"], 建名["x"]], 建界名["",""]])),
201199
(fM["","","?"]1(\[x] -> x? case x of
@@ -233,17 +231,25 @@ m n c x = (建名 n, 引機 (界機 (MkJJ界機物 n ce f (建參 ce) (建列[
233231
Get物 _ = Nothing
234232

235233
:: W-> Mapping M名物 W-> W
236-
算 x@(W名 m) e = mappingRef e (名 m) (界誤 [""] [x,境To物 e])
237-
算 (W首尾 y x) e | y == 用式名 = case x of
238-
W首尾 f xs -> wip
239-
_ -> 界誤 [""] [x,境To物 e]
234+
算 _x@(W名 m) e = mappingRef e (名 m) (界誤 [""] [_x,境To物 e])
235+
算 _x@(W首尾 y x) e | y == 用式名 =
236+
let r = do
237+
W首尾 f xs <- return x
238+
xs' <-ToList xs
239+
return (f, xs')
240+
in case r of
241+
Just (f, xs) -> case 算 f e of
242+
W引機 f -> 用 f ((境To物 e) : xs)
243+
W譯機 f -> 算 (用 f xs) e
244+
_ -> 界誤 [""] [_x,境To物 e]
245+
Nothing -> 界誤 [""] [_x,境To物 e]
240246
算 _x@(W首尾 y x) e | y == 用界名 = case x of
241247
W首尾 (W名 m) W-> mappingRef e (名 m) (界誤 [""] [_x,境To物 e])
242248
_ -> 界誤 [""] [_x,境To物 e]
243249
算 _x@(W首尾 f as) e = caseToList as of
244-
Just xs -> caseTo機物 f of
245-
Just f -> 用 f (map (\x->算 x e) xs)
246-
Nothing -> 界誤 [""] [f,as]
250+
Just xs -> let (xs', f') = (map (\x->算 x e) xs, 算 f e) in caseTo機物 f' of
251+
Just f'' -> 用 f'' xs'
252+
Nothing -> 界誤 [""] [f', 建列 xs']
247253
Nothing -> 界誤 [""] [_x,境To物 e]
248254
算 x@(W誤 _) e = 界誤 [""] [x,境To物 e]
249255
算 x e = x

0 commit comments

Comments
 (0)