Released Version 3.6.3
This release adds support for R7RS bytevectors. Husk will continue to slowly add R7RS features as the small language standard nears completion.
In addition, this release adds the Haskell function evalLisp'
to evaluate a lisp data structure and return the LispVal
or LispError
result directly:
evalLisp' :: Env -> LispVal -> IO (ThrowsError LispVal)
This makes it much easier to retrieve results when using husk as an extension language:
result <- evalLisp' env $ List [Atom "/", Number 1, Number 0]
case result of
Left err -> putStrLn $ "Error: " ++ (show err)
Right val -> putStrLn $ show val
Finally, a bug has been fixed where setting a variable to refer back to itself would result in an infinite loop. For example, the last line of the following code would previously cause huski
to hang:
(define a '())
(define b a)
(define a b)