Difference between revisions of "GroteTrap"

From HaskellWiki
Jump to navigation Jump to search
m (fixed error)
m (improved example)
Line 30: Line 30:
 
<haskell>
 
<haskell>
   
> readExpression logicLanguage "p && q"
+
> readExpression logicLanguage "p && q -> r"
And [Var "p",Var "q"]
+
Impl (And [Var "p",Var "q"]) (Var "r")
   
 
</haskell>
 
</haskell>

Revision as of 12:38, 24 June 2008

GroteTrap allows you to quickly define expression languages. It is available for download on Hackage.

An example:

data Logic
  = Var String
  | Or [Logic]
  | And [Logic]
  | Impl Logic Logic
  | Not Logic
  deriving (Show, Eq)

logicLanguage :: Language Logic
logicLanguage = language
  { variable  = Var
  , operators =
      [ Unary    Not  Prefix 0 "!"
      , Nary     And  True   1 "&&"
      , Nary     Or   True   2 "||"
      , Binary   Impl InfixR 3 "->"
      ]
  }

With this, we can do:

> readExpression logicLanguage "p && q -> r"
Impl (And [Var "p",Var "q"]) (Var "r")