• Stars
    star
    295
  • Rank 140,902 (Top 3 %)
  • Language
    Haskell
  • License
    MIT License
  • Created over 14 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A full implementation of the Scheme programming language for the Haskell Platform.

husk-scheme

Husk is a dialect of Scheme written in Haskell that implements a superset of the R5RS standard and a large portion of the R7RS-small language. Advanced features are provided including continuations, hygienic macros, libraries, and a full numeric tower.

Husk may be used as either a stand-alone interpreter or as an extension language within a larger Haskell application. By closely following the R5RS standard, the intent is to develop a Scheme that is as compatible as possible with other R5RS Schemes. Husk is mature enough for use in production applications, however it is not optimized for performance-critical applications.

Scheme is one of two main dialects of Lisp. Scheme follows a minimalist design philosophy: the core language consists of a small number of fundamental forms which may be used to implement other built-in forms. Scheme is an excellent language for writing small, elegant programs, and may also be used to write scripts or embed scripting functionality within a larger application.

More information is available on the husk website.

Installation

  1. Prerequisites: You will need the Haskell Platform if you don't already have a recent copy installed.

  2. Install Husk using cabal:

     cabal update
     cabal install husk-scheme
    

    If you are new to Haskell or just want to run Husk you may also need to run:

     cabal install --lib husk-scheme
    
  3. Adjust your PATH: Before running Husk you may also need to add the cabal executable directory to your path. On Linux this is ~/.cabal/bin.

  4. Now you are ready to start up the interpreter:

     justin@my-pc$ huski
       _               _        __                 _                          
      | |             | |       \\\               | |                         
      | |__  _   _ ___| | __     \\\      ___  ___| |__   ___ _ __ ___   ___  
      | '_ \| | | / __| |/ /    //\\\    / __|/ __| '_ \ / _ \ '_ ` _ \ / _ \ 
      | | | | |_| \__ \   <    /// \\\   \__ \ (__| | | |  __/ | | | | |  __/ 
      |_| |_|\__,_|___/_|\_\  ///   \\\  |___/\___|_| |_|\___|_| |_| |_|\___| 
                                                                          
      http://justinethier.github.com/husk-scheme                              
      (c) 2010-2014 Justin Ethier                                             
      Version 3.18 
                                                                          
     huski> (define (hello) 'world)
     (lambda () ...)
     huski> (hello)
     world
    

Husk has been tested on Windows, Linux, and FreeBSD.

Documentation

The online user manual provides an overview of the Scheme language as implemented by Husk, including:

Directory Structure

  • docs - Documentation has been moved from here to the gh-pages branch.
  • examples - Example programs, mostly written in Scheme.
  • extensions - Haskell-based extensions to Husk.
  • hs-src - Haskell source code for Husk.
  • lib - Library portions of Husk written in Scheme.
  • scripts - Build scripts for Husk and a basic Emacs integration script.
  • tests - Functional tests for Husk. These can be run automatically by using make test from the main Husk directory.

License

Copyright (C) 2010 Justin Ethier

Husk scheme is available under the MIT license.

The interpreter is based on code from the book Write Yourself a Scheme in 48 Hours written by Jonathan Tang and hosted / maintained by Wikibooks.

More Repositories

1

cyclone

๐ŸŒ€ A brand-new compiler that allows practical application development using R7RS Scheme. We provide modern features and a stable system capable of generating fast native binaries.
Scheme
780
star
2

node-kdtree

A node.js add-on for performing efficient Nearest Neighbor searches using libkdtree.
C
58
star
3

cyclone-bootstrap

๐ŸŒ€ Install Cyclone Scheme on your machine.
C
31
star
4

AVL-Tree

Implementation of an AVL tree in Java
Java
20
star
5

nugget

Compiler for a tiny subset of the Scheme language.
Scheme
16
star
6

zig-mark-sweep-gc

๐Ÿงน Zig port of Bob Nystrom's simple mark-sweep GC
Zig
4
star
7

aes

Implementations of the AES encryption algorithm in various languages. For educational purposes only!
C
4
star
8

git-mirror

๐Ÿชž Basic script to setup and sync a mirror of a git repository
Shell
3
star
9

keyva

๐Ÿ”‘ A distributed key-value store
Go
3
star
10

linked-list

An example implementation of a singly-linked list
C
3
star
11

multiplication-table

An interactive multiplication table for the kids
JavaScript
3
star
12

wordle-bot

Python
2
star
13

stack-exchange-watch

Unix command-line utility to automatically monitor Q&A activity on Stack Exchange
C
2
star
14

hs-examples

Haskell example programs, scripts, etc
Haskell
2
star
15

hs-bindings-sipc

Haskell bindings for the SELinux Secure Inter-Process Communications Library.
Haskell
2
star
16

rosalind

Solutions to problems from Rosalind, a platform for learning bioinformatics through problem solving.
C
1
star
17

Doomed

Demo files and support scripts for the Justin on DOOM YouTube channel
Shell
1
star
18

justinethier.github.com

1
star
19

graphics

A collection of graphics programs, mostly written in Processing.
Java
1
star
20

node-samples

Sample code written for node.js
JavaScript
1
star
21

Truchet

Image generation using Truchet tiling algorithms
C
1
star
22

justinethier-misc

C
1
star
23

dotfiles

Personal scripts for vim, git, and other tools.
Vim Script
1
star