Popularity
3.1
Growing
Activity
0.0
Declining
6
1
0

Monthly Downloads: 19
Programming language: Haskell
License: MIT License
Tags: Simple    

zuramaru alternatives and similar packages

Based on the "Simple" category

Do you think we are missing an alternative of zuramaru or a related project?

Add another 'Simple' Package

README

((((zuramaru)))) Build Status Hackage

おらは 国木田花丸 ずら〜

A lisp dialect, an inline-lisp library

An inline-lisp in Haskell

QuasiQuoters supports in this module

:muscle: Example :muscle:

:one: S expression parser

As expressions

>>> print [parse|123|]
AtomInt 123

>>> print [parse|sugar|]
AtomSymbol "sugar"

>>> print [parse|(1 2 3)|]
Cons (AtomInt 1) (Cons (AtomInt 2) (Cons (AtomInt 3) Nil))

As patterns

>>> case AtomInt 123 of; [parse|123|] -> "good"
"good"

>>> case AtomInt 000 of; [parse|123|] -> "bad"; AtomInt _ -> "good"
"good"

>>> case Cons (AtomSymbol "x") (Cons (AtomInt 10) Nil) of; [parse|(x 10)|] -> "good"
"good"

As types (compile time calculations)

>>> fromSing (sing :: Sing [parse|10|])
AtomInt 10

>>> fromSing (sing :: Sing [parse|konoko|])
AtomSymbol "konoko"

>>> fromSing (sing :: Sing [parse|(1 2 3)|])
Cons (AtomInt 1) (Cons (AtomInt 2) (Cons (AtomInt 3) Nil))

:two: S expression parser + preprocessor

>>> [parsePreprocess|sugar|]
AtomSymbol "sugar"

>>> [parsePreprocess|'10|]
Quote (AtomInt 10)

>>> [parsePreprocess|(quote 10)|]
Quote (AtomInt 10)

:three: S expression parser + preprocessor + evaluator

>>> [zurae|10|]
10

>>> [zurae|(print 10)|]
10Nil

>>> [zurae|'10|]
AtomInt 10

>>> [zurae|sugar|]
<interactive>:12:8: error:
    • Maru.QQ.zurae: an error is occured in the compile time: EvalException: "A symbol 'sugar' is not found"
    • In the quasi-quotation: [zurae|sugar|]

Please see below modules's doctests for more infomation