ghc
xl
Our great sponsors
ghc | xl | |
---|---|---|
95 | 6 | |
2,971 | 242 | |
0.8% | - | |
9.7 | 10.0 | |
about 7 hours ago | about 1 year ago | |
Haskell | C++ | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 only |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
ghc
-
Veryl: A Modern Hardware Description Language
of course it does! what else would you call something like chicken scheme [https://call-cc.org/], ats [https://ats-lang.sourceforge.net/], or ghc [https://www.haskell.org/ghc/]? they are not "scripts", they are full-blown compilers that happen to use C as their compilation target, and then leverage C compilers to generate code for a variety of architecures. it's a very sensible way to do things.
-
XL: An Extensible Programming Language
Agree about Haskell... as far as I'm aware there is actually no declarative/easily-readable definition of the Haskell syntax that is also complete, especially when it comes to the indentation rules, and the syntax is basically defined by the very (ironically) imperatively-defined GHC parser[0].
I prefer a syntax like in Pure[1], where the ambiguous, hard to parse indentation-based syntax is replaced by explicit semicolons (Yeah, you can use braces/semicolons in Haskell as well, but most code doesn't).
[0] https://github.com/ghc/ghc/blob/master/compiler/GHC/Parser/L...
[1] https://agraef.github.io/pure-lang/
-
Revisiting Haskell after 10 years
GHC, the main Haskell compiler
-
Beginner question -- best way to implement this in Haskell?
GHCi, version 9.6.3: https://www.haskell.org/ghc/ :? for help Loaded GHCi configuration from /Users/daniel/.ghci ghci> :{ | split :: Float -> [Int] | split value = map(read . (:[])) . show | :} :3:15: error: [GHC-83865] • Couldn't match expected type: [Int] with actual type: a0 -> [b0] • Probable cause: ‘(.)’ is applied to too few arguments In the expression: map (read . (: [])) . show In an equation for ‘split’: split value = map (read . (: [])) . show
-
GHC 9.8.1 has been released
GHC is hosted on Gitlab, the Github repo is just a mirror. So money.
https://github.com/ghc/ghc
-
Um rápido Hello World com Haskell
☁ ~ ghci GHCi, version 9.4.7: https://www.haskell.org/ghc/ :? for help ghci> 6 + 3^2 * 4 42
-
Introducing NeoHaskell: A beacon of joy in a greyed tech world
Depending on who you ask, a programming language can be different things. If you ask the Haskell community, many will tell you that the language is the Haskell specification, and that what currently is being used is not Haskell itself, but an extension of Haskell that is supported by the GHC compiler. Similar to the C language, a programming language would be a specification.
- Exploring the Internals of Linux v0.01
-
type derivation
GHCi, version 9.4.2: https://www.haskell.org/ghc/ :? for help Loaded GHCi configuration from ~/.dotfiles/ghc/.ghc/ghci.conf
- Why did GHC go from "occurs check failed" to talking about rigid type variables?
xl
-
XL: An Extensible Programming Language
From what I can read the author got really unlucky with some kind of radical API changes. Maybe at that time the LLVM team was a bit less serious with deprecations ?
I use LLVM since v9, nowadays I'm stuck on v15 (that's not because of LLVM btw).
Between the two versions there's been a radical change too, i.e "opaque pointers", but the transition was rather smooth as we were provided, for a long time, the two versions of the functions affected by the change. Maybe the LLVM team got more serious since the author experienced the said difficulties ?
Other thing I note is that the author uses the CPP API. I use the C one which exposes only a high-level subset of the CPP one. This encourages a saner use of LLVM, a more concrete separation between the front-end and the mid-end, although sometimes there are limitations.
A simple example of what encourages the C API, especially since opaque ptrs are added, is not to rely on LLVM to retrieve the IR type of an IR value. That should always be done using the AST, eg with an `.ir` field in your nodes.
Another one I remark, after a brief overview of LLVM-CRAP, is that the author had to change the internal data structure used, depending on the LLVM version [0]. Using the C API that would never had happened. The C API essentially allows to create block refs, instructions refs, value refs, type refs, contexts. Then you choose the containers you want to use to hold them. No need to switch to another stdcpp one, even if internally LLVM does so.
[0]: https://github.com/c3d/xl/blob/master/src/llvm-crap.cpp#L265
- Ask HN: Cool Useful GitHub Repos?
What are some alternatives?
polysemy - :gemini: higher-order, no-boilerplate monads
Modern_GUI_PyDracula_PySide6_or_PyQt6
in-other-words - A higher-order effect system where the sky's the limit
Modern_GUI_PyDracula_
vim-multiple-cursors - True Sublime Text style multiple selections for Vim
db48x - RPL runtime for the DM42 calculator, in the spirit of HP48/49/50
effect-zoo - Comparing Haskell effect systems for ergonomics and speed
seed7 - Source code of Seed7
frp-zoo - Comparing many FRP implementations by reimplementing the same toy app in each.
fused-effects - A fast, flexible, fused effect system for Haskell
xvm - Ecstasy and XVM
ghc-proposals - Proposed compiler and language changes for GHC and GHC/Haskell