X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=gCons.icl;h=6e5aaa52d14b48efc5685f319005e369559605dc;hb=68e65ffa79b10fc6762a0f7989a268126fc20c1b;hp=e34909aa6f0b8d5c7e1456bcdc4398b0a0f4876f;hpb=7d7b6bdf4400272d6199401bcd76794cba9055ce;p=mTask.git diff --git a/gCons.icl b/gCons.icl index e34909a..6e5aaa5 100644 --- a/gCons.icl +++ b/gCons.icl @@ -22,6 +22,7 @@ consName{|Int|} i = toString i consName{|Bool|} b = toString b consName{|Char|} c = toString c consName{|String|} s = s +consName{|[]|} _ _ = "[]" consName{|(->)|} f g x = g (x undef) generic consIndex a :: a -> Int @@ -35,29 +36,26 @@ consIndex{|Int|} i = i consIndex{|Bool|} b = if b 1 0 consIndex{|Char|} c = toInt c consIndex{|String|} _ = 0 +consIndex{|[]|} _ _ = 0 -conses :: [a] | gconses{|*|} a -conses = gconses{|*|} True - -generic gconses a :: Bool -> [a] -gconses{|CONS|} f True = map CONS (f False) -gconses{|CONS|} f b = [CONS (hd (f b))] -gconses{|UNIT|} _ = [UNIT] -gconses{|PAIR|} f g _ = [] -gconses{|EITHER|} f g b = map LEFT (f b) ++ map RIGHT (g b) -gconses{|OBJECT|} f b = map OBJECT (f b) -gconses{|RECORD|} f b = map RECORD (f b) -gconses{|FIELD|} f b = map FIELD (f b) -gconses{|Int|} _ = [0] -gconses{|Bool|} _ = [True] -gconses{|Char|} _ = ['\0'] -gconses{|Real|} _ = [0.0] -gconses{|String|} _ = [""] -gconses{|[]|} _ _ = [[ ]] -gconses{|[!]|} _ _ = [[!]] -gconses{|[ !]|} _ _ = [[ !]] -gconses{|[!!]|} _ _ = [[!!]] -gconses{|{}|} _ _ = [{}] -gconses{|{!}|} _ _ = [{!}] -gconses{|()|} _ = [()] -gconses{|(->)|} _ _ _ = [const undef] +generic conses a :: [a] +conses{|CONS|} f = [CONS (hd f)] +conses{|UNIT|} = [UNIT] +conses{|PAIR|} f g = [] +conses{|EITHER|} f g = map LEFT f ++ map RIGHT g +conses{|OBJECT|} f = map OBJECT f +conses{|RECORD|} f = map RECORD f +conses{|FIELD|} f = map FIELD f +conses{|Int|} = [0] +conses{|Bool|} = [True] +conses{|Char|} = ['\0'] +conses{|Real|} = [0.0] +conses{|String|} = [""] +conses{|[]|} _ = [[ ]] +conses{|[!]|} _ = [[!]] +conses{|[ !]|} _ = [[ !]] +conses{|[!!]|} _ = [[!!]] +conses{|{}|} _ = [{}] +conses{|{!}|} _ = [{!}] +conses{|()|} = [()] +conses{|(->)|} _ _ = [const undef]