algebraic data types

db4
Sam Anklesaria 2009-07-31 11:11:49 -05:00
parent 0e1b014ea0
commit 92cc62de85
4 changed files with 17 additions and 0 deletions

View File

@ -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." } ;

View File

@ -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

View File

@ -0,0 +1 @@
Sam Anklesaria

View File

@ -0,0 +1 @@
Haskell-like algebraic data types