Added cabal and vim dir

This commit is contained in:
hellerve
2015-04-05 17:47:08 +02:00
parent 1e73d5652c
commit ae5a30a4a4
2440 changed files with 40465 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
;;;
;;; husk-scheme
;;; http://justinethier.github.com/husk-scheme
;;;
;;; Written by Justin Ethier
;;;
;;; r7rs-small case-lambda library
;;;
; TODO: this is the macro from the spec, but husk
; does not handle the let-syntax portion...
(define-library (scheme case-lambda)
(export
case-lambda)
(import (scheme base))
(begin
(define-syntax case-lambda
(syntax-rules ()
((case-lambda (params body0 ...) ...)
(lambda args
(let ((len (length args)))
(let-syntax
((cl (syntax-rules ::: ()
((cl)
(error "no matching clause"))
((cl ((p :::) body :::) rest :::)
;((cl ((p :::) . body) . rest)
(if (= len (length '(p :::)))
(apply (lambda (p :::)
body :::)
;. body)
args)
(cl rest :::)))
;(cl . rest)))
; TODO: for now, var-length arg support is broken
;((cl ((p ::: . tail) . body)
; . rest)
; (if (>= len (length '(p :::)))
; (apply
; (lambda (p ::: . tail)
; . body)
; args)
; (cl . rest)))
)))
(cl (params body0 ...) ...)))))))
))