Popularity
2.9
Growing
Activity
0.0
Stable
7
2
0

Monthly Downloads: 12
Programming language: Haskell
License: BSD 3-clause "New" or "Revised" License
Tags: Language    
Latest version: v0.1.0.4

haskeme alternatives and similar packages

Based on the "Language" category.
Alternatively, view haskeme alternatives based on common mentions on social networks and blogs.

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

Add another 'Language' Package

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)