

Show HN: Heresy, a BASIC-inspired functional Lisp - jarcane
https://github.com/jarcane/heresy

======
Tloewald
If you could elimiate the outermost braces and have a line continuation
character you might get something even less intimidating.

In other words anything between two auccessive non escaped line endings is
treated as being parenthesized. Suddenly you can write lisp without parens
everywhere.

~~~
axblount
There's an SRFI that outlines an indentation based Scheme syntax called Sweet-
expressions. It also adds infix operations.

[http://srfi.schemers.org/srfi-110/srfi-110.html](http://srfi.schemers.org/srfi-110/srfi-110.html)

~~~
jarcane
Interesting, turns out there is a version of this for Racket:
[https://github.com/takikawa/sweet-racket](https://github.com/takikawa/sweet-
racket)

I will have to take a gander and see if it's compatible.

------
giancarlostoro
Odd.. I had a similar project I worked on at work one day out of boredom.
Except mine was called "HereC", I was trying to make C more Basic like. Visual
Basic 6 was my first language, so sometimes it's fun to 'go back' to it.
GAMBAS is a neat little language I play with now and then.

~~~
zem
euphoria [[http://www.rapideuphoria.com/](http://www.rapideuphoria.com/)] is
the closest I've seen to a decent c/basic cross. worth checking out if you're
interested in that space.

------
gus_massa
Have you tried to use keywords instead of normal symbols in the forms?

For example, instead of

    
    
      (if *test* then *do1* else *do2*)
    

define it to use

    
    
      (if *test* #:then *do1* #:else *do2*)
    

[Disclaimer: I still use VB6 from time to time.]

~~~
jarcane
I didn't really think about it. Doing them as literals felt more idiomatic to
classic BASIC, and it was easy to implement (initially) with syntax-rules.

------
3ifbyw
I expected GOTO implemented with continuations. Very disappointing.

~~~
jarcane
CL can already do GOTO. And the BREAK and CARRY implementations use exit
continuations.

I did consider doing it in CL though because then I'd have an excuse to call
FUNCTION and FUNCALL "SUB" and "GOSUB".

------
skrebbel
Nice, but I miss ON ERROR RESUME NEXT.

------
s_dev
I love the name.

