haskeme alternatives and similar packages
Based on the "Language" category.
Alternatively, view haskeme alternatives based on common mentions on social networks and blogs.
-
elm-compiler
Compiler for Elm, a functional language for reliable webapps. -
stylish-haskell
Haskell code prettifier [Moved to: https://github.com/haskell/stylish-haskell] -
haskell-src-exts
Manipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer -
nirum
Nirum: IDL compiler and RPC/distributed object framework for microservices -
language-python
A parser for Python 2.x and 3.x written in Haskell -
tal
An implementation of Typed Assembly Language (Morrisett, Walker, Crary, Glew) -
language-c-quote
C/CUDA/OpenCL/Objective-C quasiquoting library. -
aterm-utils
Utility functions for working with aterms as generated by Minitermite -
language-ecmascript
Haskell library: ECMAScript parser, pretty-printer and additional tools -
ministg
Ministg is an interpreter for a high-level, small-step, operational semantics for the STG machine. -
purescript-tsd-gen
TypeScript Declaration File (.d.ts) generator for PureScript
Static code analysis for 29 languages.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of haskeme or a related project?
README
haskeme
This compiler translates Scheme source code written with I-Expressions (indented expressions) into S-Expressions (symbolic expressions).
Usage
Haskeme can read and write files:
haskeme --input "program.hss" --output "program.ss"
Haskeme can also use StdIn
and StdOut
:
cat "program.hss" | haskeme > "program.ss"
Options
-i
or--input
to specify input file-o
or--output
to specify output file
I-Expressions
I-Expressions are indented expressions and are translated by few simple rules:
- a new line translates to a new S-Expression
- same indentation as the expression above translates to a new S-Expression following the prior one
- more indentation as the expression above translates to a new S-Expression as an argument to the prior one
- less indentation as the expression above, but still more indentation as another expression above translates to a new S-Expression, while the prior and further indented block gets wrapped in extra parentheses (look at the
let
-example) - S-Expression can be mixed in while staying in a single line (look at the example for mixed expressions)
- full line comments starting with
;
are ignored - a new line can be prevented from being turned into an S-Expression by prepending it with
:
after the indent (look at the example for prevented expressions)
Example
I-Expressions:
define f lambda x let y * x x if > x 0 + y 1 : #f
S-Expressions:
(define f (lambda (x) (let ((y (* x x))) (if (> x 0) (+ y 1) #f))))
mixed I- and S-Expressions:
define f lambda (x) let y (* x x) if (> x 0) + y 1 : #f
Install
install from Hackage with
cabal
:cabal install haskeme
clone from GitHub and compile with
cabal
:git clone https://github.com/jumper149/haskeme.git cd haskeme cabal build
clone from GitHub and compile with
ghc
(not recommended, use this PKGBUILD as a template)install from AUR (only ArchLinux-Users)
Dependencies
ghc
(make)cabal
(opt. make)