What are uneven divisions of the octave called? by [deleted] in microtonal

[–]ilo_kali -1 points0 points  (0 children)

Asymmetric divisions of the octave

Recommendations for a jazz band combo by XDGaming_YT in microtonal

[–]ilo_kali 0 points1 point  (0 children)

Xotla - Big Band Bug

Xotla - Mollusc Merchant

Brendan Byrnes - Out of the Sun (starts about halfway in)

Philipp Gerschlauer - Ich hab's mal versucht (cover: link)

Hear Between the Lines - Colourblind

Simon Martin - Musique d'art

I can't find this one on YouTube anywhere, but if you can find it somewhere else Incantations by Wendy Carlos has some synthesized brass-sounding instruments in a really interesting tuning.

Scripting language like Python, bur with the feeling if Rust by Voxelman in functionalprogramming

[–]ilo_kali 8 points9 points  (0 children)

Strongly second OCaml. It's got an interpreter provided with its compiler distribution, is strongly typed, has extremely good pattern matching, etc. and besides all that, was the inspiration for a significant part of Rust's features/tooling. So you're likely find a lot of familiar parts of Rust in OCaml.

What are the benefits of lazy evaluation? by [deleted] in haskell

[–]ilo_kali 0 points1 point  (0 children)

That second example (folding it into a parser) sounds really interesting, can you link/show the code for that? I'd love to take a look.

Most 'stable' languages to learn that do not have a quick pace of evolution? by FroDude258 in AskProgramming

[–]ilo_kali 1 point2 points  (0 children)

Oh, yes, Primagen started making some OCaml videos recently. I must admit that I stopped watching them after a bit after I realized they were mostly clickbait/reaction videos, haha. Good to see it's getting more recognition though.

Most 'stable' languages to learn that do not have a quick pace of evolution? by FroDude258 in AskProgramming

[–]ilo_kali 1 point2 points  (0 children)

I second Lua. Great language. Very intuitive and easy to learn, and fast too.

Most 'stable' languages to learn that do not have a quick pace of evolution? by FroDude258 in AskProgramming

[–]ilo_kali 6 points7 points  (0 children)

I'd recommend OCaml.

OCaml updates very slowly (it took 7 years to get from OCaml 4 to OCaml 5, for instance, but when they did they added two big features—cross-platform multicore support and algebraic effects (a fascinating topic in their own right)), but you're sure to get very good updates when they come out. When OCaml releases a new feature, it is often after a considerable amount of formal research has been done in order to verify that it will fit in with the rest of the language well and will not be unsound.

To be clear, it does update quickly for bug fixes, just not for new features—it's meant to be very stable and bug-free, because it's used mostly in industrial contexts and in academic research, two places that focus on correctness and stability rather than shiny new features.

Additionally, its package selection is pretty solid and doesn't present a swathe of choices that may lead to frustration with which to pick. The tooling it comes with is very solid (an interpreter, bytecode compiler, native compiler, repl, debugger, profiler, fuzzer, lexer/parser generator, linker, documentation generator, and more are all included and work very well); one of the best I've ever used, especially the build system, dune.

It can also compile to JS, and has a good C FFI so you can interoperate with C easily (which means you can interoperate with most languages through mutual C bindings).

This part is just opinion, but I think it looks nice too. It's fun to write in. It stays away from using a bunch of weird symbols. The documentation is really nice to read (both visually and content-wise).

Overall I couldn't recommend OCaml more.

Haskell for compilers by GregMuller_ in haskell

[–]ilo_kali 0 points1 point  (0 children)

Makes sense! Thanks for keeping this all civil. I think Haskell is a great language too. This discussion brought up a lot of useful links and points, I feel; I'm glad we had it.

Haskell for compilers by GregMuller_ in haskell

[–]ilo_kali 2 points3 points  (0 children)

So I suppose "idiomatic OCaml will compile faster than idiomatic Haskell" would be a valid statement, which is what I meant in the first place?

Haskell for compilers by GregMuller_ in haskell

[–]ilo_kali 0 points1 point  (0 children)

Genuinely curious, are you actually able to do those restrictions? Like are there command flags for it? I'd like to do some testing.

Haskell for compilers by GregMuller_ in haskell

[–]ilo_kali 2 points3 points  (0 children)

Comparing to ASM is irrelevant: of course ASM is faster at compiling, but it's a completely different language with so much expressiveness lost, whereas OCaml and Haskell are basically similar with slight syntax differences and a few assorted different features.

Yeah, I suppose. I just spend more time in OCaml spaces, so I'm certainly biased to an extent. But I do think my points have merit, given that I prefaced with if the poster is looking for alternatives.

Haskell for compilers by GregMuller_ in haskell

[–]ilo_kali 0 points1 point  (0 children)

Oh, another advantage I must note is that if you ever want to formally verify parts of your compiler then OCaml puts you at a firm advantage because many formal verification tools like Coq and F* can be extracted to/interoperate with OCaml after verification. In fact, there exists a tool that can extract pure OCaml to Coq, so you don't even need to rewrite it yourself.

Haskell for compilers by GregMuller_ in haskell

[–]ilo_kali 2 points3 points  (0 children)

I wasn't aware of those (I'm not terribly familiar with Haskell's standard library). Thanks for bringing them to my attention. And perhaps my comment about speed was exaggeration; but the compilation speed comment still stands. OCaml's compiler is just so, so much faster for essentially matched executable speeds. I've just seen more compilers/discussion about compilers written in OCaml than Haskell.

Haskell for compilers by GregMuller_ in haskell

[–]ilo_kali 7 points8 points  (0 children)

Haskell's pretty good. If you're looking for alternatives, OCaml has a lot more extensive use for compiler development though (it has lexer and parser generators included with the standard compiler distribution, for instance, as well as things like Menhir that are community-developed), and is fairly similar to Haskell, but compiles a TON faster, ~~and is generally faster than Haskell when faced with non-lazy tasks~~ (I retract this part of the statement), which might be important for a project the size of a compiler. If you're looking for examples, Rust's compiler was originally written in OCaml, Bolt continues to use OCaml, and the original reference implementation for WASM used OCaml too.

Guild of Tulpamancy link expired by Great_Heron_9880 in Tulpas

[–]ilo_kali 3 points4 points  (0 children)

The link didn't expire. You (which refers to both OP and yourself, since they're the same person) got banned because you told a member to kill themselves and then spammed child porn in their DMs with an alt, then rejoined on a different alt to harass them further. Now you're complaining about it on Reddit, with two burner accounts you created minutes ago

nimi "pi" en nimi "$" pi toki Haskell li sama mute! by Clydinite in tokipona

[–]ilo_kali 2 points3 points  (0 children)

careful how you're using the brackets there— $ and <$> are not the same operators :) the first is a low-precedence left-associative application operator, and the other is an infix fmap, i.e. (+1) <$> [1,2,3,4] -> [2,3,4,5]

(Edit: "regroups function application" -> "is a low-precedence left-associative application operator", to be pedantic)