Hacker News new | ask | show | jobs
by strbean 1720 days ago
"You have to know the language" is a pretty poor criticism IMHO. How are we to gauge time for any such project if we don't assume competency with the language first? How long would it take to make a simple blog? Depends on how long it will take you to learn HTML/CSS/Javascript...
1 comments

”Pompom language is so simple that you can implement it yourself just by looking in the source code (We have only 1000 lines in the core, you can think that our language is the BASIC language of proof assistants).”

The reason PomPom is so simple and the reason why the basic syntax of PomPom has lambda and abstraction is because GHC gives you that machinery for free, and that's just for starters. Look at how the README is ordered: bunch of verbose language examples, then terse language syntax, then oh by the way you need Cabal and GHC.

Instead of your blog example which I can't quite analogise from … imagine I said that I had an implementation of a cool custom OOP library (let's stick with programming language features) and then said: here are some examples of the code, and here is the syntax, and by the way I used C++ (or some other language that has built-in OOP) and Bison (or some other parser generator), among other things.

What I'm saying is. Where is the simplicity coming from?

Six Haskell files. Checker.HS uses {-# LANGUAGE LambdaCase #-} and has

> Checker.HS uses {-# LANGUAGE LambdaCase #-}

Allowing people to write

    \case SomePattern -> ... | OtherPattern -> ...
instead of

    \x -> case x of SomePattern -> ... | OtherPattern -> ...
is not a meaningful change in complexity.
The simplicity comes from picking simple abstractions to build a dependent type checker. If I have decided to put linear types in PomPom, for example, you will probably waste more time implementing it than actually capturing a lot of expressivity. So the point is to pick what you think is better in the trade-off.