
Hackett – A Haskell-like language with support for Racket’s macro system - tosh
https://github.com/lexi-lambda/hackett
======
acobster
It's really cool to see Racket being used like this! Its power really shines
through:

> _Due to the way Hackett is implemented, many things that are language
> features in Haskell can be derived concepts in Hackett. In fact, Hackett’s
> ADTs are not primitives, they are actually implemented as a library via the
> data and case macros_

~~~
bjoli
Yeah. I have always been amazed by the Haskell crowd's dislike of macros.
Proper macro systems are incredibly useful, even in a language like Haskell.

~~~
jeremyjh
I don’t think Haskellers are against macros in general, but prefer Generic or
GADT for tasks other languages might use macros for. Also Template Haskell
sucks but we still have to use it sometimes which makes us bitter. I would
welcome a hygenic, typed macro system like Hackett has.

~~~
archgoon
What are the problems with Template Haskell?

~~~
jeremyjh
As an author of Template Haskell the expression trees you build are not
constrained by types (other than Exp); you won't see a type error due to a
problem in a Template Haskell function until you try to use that function in
another module, and it produces Haskell code that in turn does not compile.

As a user of Template Haskell functions you will mostly complain about the
slow compilation time, the jarring syntax, poor documentation (since so much
of Haskell documentation relies on types) and the error messages when you do
something wrong.

~~~
sridca
Also Template Haskell is not supported by all Haskell implementations (eg:
Reflex on mobile).

------
Y_Y
This article might be a useful introduction to what this is about:
[https://lexi-lambda.github.io/blog/2017/05/27/realizing-
hack...](https://lexi-lambda.github.io/blog/2017/05/27/realizing-hackett-a-
metaprogrammable-haskell/)

~~~
peatmoss
In addition, Lexi Lambda has done a number of talks that are on Youtube. I
watched one such talk at RacketCon this past year.

~~~
Y_Y
[https://www.youtube.com/watch?v=bOUgXd9XlJ4](https://www.youtube.com/watch?v=bOUgXd9XlJ4)

------
Y_Y
The more I learn about this project the more I like it.

It would be amazing to see Hackett implemented in miniKanren, I think that
would really bring us a big step closer to "compiler as a conversation" sort
of programming. The combination of relational evaluation and the Haskell type
system should be really powerful.

~~~
disconcision
> "compiler as a conversation"

could you elaborate on this concept?

~~~
Y_Y
It's not my idea, or a new idea. All the same I couldn't find a good
reference. This [0] thread should give you an idea of what I'm talking about
and hopefully someone else will come along with a better link.

[0][https://news.ycombinator.com/item?id=9397489](https://news.ycombinator.com/item?id=9397489)

------
spraak
Wow, just wow! I've read a lot of disbelief about how such a language would be
impossible or at least practically too difficult to implement. I've been
really keen to find exactly this!

------
gilmi
When a language designer takes their project seriously: [http://docs.racket-
lang.org/hackett/index.html](http://docs.racket-lang.org/hackett/index.html)

------
jadengore
Alexis is one of the smartest programmers I have ever worked with. Really cool
to see your project front page!

