algebraic data types
parent
0e1b014ea0
commit
92cc62de85
|
@ -0,0 +1,5 @@
|
|||
USING: help.markup help.syntax ;
|
||||
IN: classes.algebraic
|
||||
HELP: DATA:
|
||||
{ $syntax "DATA: class constructor | constructor arg ... | ... ;" }
|
||||
{ $description "Creates a haskell style algebraic data type. For each constructor, a seperate tuple is created, and the resulting tuples are added to a union class." } ;
|
|
@ -0,0 +1,10 @@
|
|||
USING: classes.parser classes.tuple classes.union kernel peg
|
||||
peg-lexer sequences ;
|
||||
IN: classes.algebraic
|
||||
|
||||
ON-BNF: DATA:
|
||||
tokenizer = <foreign factor>
|
||||
delimit = "|" => [[ drop ignore ]]
|
||||
tuple = (!("|"|";").)+ => [[ unclip create-class-in [ tuple rot define-tuple-class ] keep ]]
|
||||
expr = . tuple (delimit tuple)* ";" => [[ first3 swap prefix [ create-class-in ] dip define-union-class ignore ]]
|
||||
;ON-BNF
|
|
@ -0,0 +1 @@
|
|||
Sam Anklesaria
|
|
@ -0,0 +1 @@
|
|||
Haskell-like algebraic data types
|
Loading…
Reference in New Issue