From 0ef6d707911b3cc57a0bee5db33a444237219c29 Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Sun, 21 May 2023 22:00:40 +0200 Subject: Find old Haskell implementation on backup disk GHC 8.0.2 vintage, doesn't compile --- hs/ding.txt | 237 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 237 insertions(+) create mode 100644 hs/ding.txt (limited to 'hs/ding.txt') diff --git a/hs/ding.txt b/hs/ding.txt new file mode 100644 index 0000000..72ecd45 --- /dev/null +++ b/hs/ding.txt @@ -0,0 +1,237 @@ +VM +{ scopeStack = + [ fromList + [ ( "list_get" + , VBlock + BT2 + ["list", "idx"] + (Block + [ Condition + (EBin BOLess (ELit (LVar "idx")) (ELit (LNum 0.0))) + (Block + [ Dive + "throw_error" + [ELit (LStr "Negative index in 'list_get'")] + (Block []) + ]) + (Block []) + , Declaration "y" (ELit LNil) + , Dive + "list" + [] + (Block + [ Dive + "get_helper" + [ELit (LVar "front"), ELit (LVar "idx")] + (Block [Assignment "y" (ELit (LVar "x"))]) + ]) + , Declaration "x" (ELit (LVar "y")) + ])) + , ( "list_new" + , VBlock + BT2 + [] + (Block + [ Declaration + "x" + (ELit + (LBlock + BT0 + [] + (Block + [ Declaration "front" (ELit LNil) + , Declaration "back" (ELit LNil) + ]))) + ])) + , ( "list_pop_back" + , VBlock + BT2 + ["list"] + (Block + [ Declaration "x" (ELit LNil) + , Dive + "list" + [] + (Block + [ Condition + (EBin BOEqual (ELit (LVar "back")) (ELit LNil)) + (Block + [ Dive + "throw_error" + [ ELit + (LStr + "Call to 'list_pop_back' on empty list") + ] + (Block []) + ]) + (Block []) + , Dive + "back" + [] + (Block + [ Assignment "x" (ELit (LVar "value")) + , Assignment "back" (ELit (LVar "prev")) + ]) + , Condition + (EBin BOEqual (ELit (LVar "back")) (ELit LNil)) + (Block [Assignment "front" (ELit LNil)]) + (Block []) + ]) + ])) + , ( "list_pop_front" + , VBlock + BT2 + ["list"] + (Block + [ Declaration "x" (ELit LNil) + , Dive + "list" + [] + (Block + [ Condition + (EBin BOEqual (ELit (LVar "front")) (ELit LNil)) + (Block + [ Dive + "throw_error" + [ ELit + (LStr + "Call to 'list_pop_front' on empty list") + ] + (Block []) + ]) + (Block []) + , Dive + "front" + [] + (Block + [ Assignment "x" (ELit (LVar "value")) + , Assignment "front" (ELit (LVar "next")) + ]) + , Condition + (EBin BOEqual (ELit (LVar "front")) (ELit LNil)) + (Block [Assignment "back" (ELit LNil)]) + (Block []) + ]) + ])) + , ( "list_push_back" + , VBlock + BT2 + ["list", "item"] + (Block + [ Dive + "list" + [] + (Block + [ Condition + (EBin BOEqual (ELit (LVar "back")) (ELit LNil)) + (Block + [ Assignment + "front" + (ELit + (LBlock + BT0 + [] + (Block + [ Declaration + "value" + (ELit (LVar "item")) + , Declaration "next" (ELit LNil) + , Declaration "prev" (ELit LNil) + ]))) + , Assignment "back" (ELit (LVar "front")) + ]) + (Block + [ Assignment + "back" + (ELit + (LBlock + BT0 + [] + (Block + [ Declaration + "value" + (ELit (LVar "item")) + , Declaration "next" (ELit LNil) + , Declaration + "prev" + (ELit (LVar "back")) + ]))) + ]) + ]) + ])) + , ( "list_push_front" + , VBlock + BT2 + ["list", "item"] + (Block + [ Dive + "list" + [] + (Block + [ Condition + (EBin BOEqual (ELit (LVar "front")) (ELit LNil)) + (Block + [ Assignment + "front" + (ELit + (LBlock + BT0 + [] + (Block + [ Declaration + "value" + (ELit (LVar "item")) + , Declaration "next" (ELit LNil) + , Declaration "prev" (ELit LNil) + ]))) + , Assignment "back" (ELit (LVar "front")) + ]) + (Block + [ Assignment + "front" + (ELit + (LBlock + BT0 + [] + (Block + [ Declaration + "value" + (ELit (LVar "item")) + , Declaration + "next" + (ELit (LVar "front")) + , Declaration "prev" (ELit LNil) + ]))) + ]) + ]) + ])) + , ( "list_set" + , VBlock + BT2 + ["list", "idx", "val"] + (Block + [ Condition + (EBin BOLess (ELit (LVar "idx")) (ELit (LNum 0.0))) + (Block + [ Dive + "throw_error" + [ELit (LStr "Negative index in 'list_set'")] + (Block []) + ]) + (Block []) + , Dive + "list" + [] + (Block + [ Dive + "set_helper" + [ ELit (LVar "front") + , ELit (LVar "idx") + , ELit (LVar "val") + ] + (Block []) + ]) + ])) + ] + ] +} -- cgit v1.2.3-54-g00ecf