The WeberLogic package

[Tags: bsd3, library, program]

Logic interpreter


[Skip to ReadMe]

Properties

Versions0.1.0.0, 0.1.1, 0.1.2
Change logNone available
Dependenciesbase (==4.6.*), parsec (==3.1.*) [details]
LicenseBSD3
AuthorCameron Brandon White
Maintainercameronbwhite90@gmail.com
CategoryMath
Home pagehttps://github.com/cameronbwhite/WeberLogic
ExecutablesWeberLogic
UploadedMon Mar 17 03:20:43 UTC 2014 by cameronbwhite
DistributionsNixOS:0.1.2
Downloads512 total (30 in last 30 days)
Votes
0 []
StatusDocs available [build log]
Successful builds reported [all 1 reports]

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees

Readme for WeberLogic-0.1.2

WeberLogic

Logic interpreter and parsing library

Install

cabal update
cabal install WeberLogic

Interpreter

$ ./WeberLogic
Enter Command
> truthTable: a&b+c->~a&b
'a'   'b'   'c'   | (((a&b)+c)->(~a&b))
True  True  True  | False
True  True  False | False
True  False True  | False
True  False False | True 
False True  True  | True 
False True  False | True 
False False True  | False
False False False | True 

Enter Command
> toNand: a&b->c 
(((((a|b)|(a|b))|((a|b)|(a|b)))|(((a|b)|(a|b))|((a|b)|(a|b))))|(c|c))

Enter Command
> toNor: a&b->c
(((((a/a)/(b/b))/((a/a)/(b/b)))/c)/((((a/a)/(b/b))/((a/a)/(b/b)))/c))

Library

The library contains two modules.

  1. WeberLogic.Parser
  2. WeberLogic.Actions

WeberLogic.Parser

The WeberLogic.Parser provides functions which read stings and return an abstract syntax tree (AST). The AST in implement with a data type called LogicExp and Letter.

WeberLogic.Actions

The WeberLogic.Actions modules provides functions which manipulate the LogicExp AST.

> import WeberLogic.Parser
> import WeberLogic.Actions

> mapM_ putStrLn $ truthTableStr $ readExp "A&B"
'a'   'b'   | (a&~b)
True  True  | False
True  False | True 
False True  | False
False False | False

> toNand $ readExp "A&~B" 
((a|(b|b))|(a|(b|b)))

> toNor $ readExp "A&~B" 
((a/a)/((b/b)/(b/b)))