GithubHelp home page GithubHelp logo

Comments (3)

joshsharp avatar joshsharp commented on July 2, 2024 1

However, in your case, it seems to me that Braid is much closer to OCaml (at least, in terms of target features).

Yes, but if I commit to implement OCaml, I may find things that don't map well (for example, the "O" in OCaml is rarely used). Even if Braid ends up being close in terms of features, keeping it separate allows me to add or remove things that make more sense. For example, as Go has a strong story around interfaces, I might choose to implement Rust-style traits which would map well but don't belong in OCaml. I'd like to retain the ability to experiment.

from braid.

joshsharp avatar joshsharp commented on July 2, 2024

Thanks for this! It was really thoughtful, I appreciate it.

There are definitely strong benefits for writing a Go backend to OCaml. My OCaml is mediocre but so is my Go so there's not a lot of difference there. One downside I could see is that OCaml has issues on Windows and incomplete support, I'm pretty sure, so going that route would mean you end up with targets Go (and thus Braid) could build for, but that the Braid compiler couldn't be run on. That's not optimal.

Ultimately there were two reasons I chose to write Braid in Go:

  1. It seemed neater to write the compiler in the language it is for — this means it only has the Go compiler (and some Go tooling) as dependencies;
  2. I wanted to write a language for fun as well as for practicality, and part of the enjoyment is to figure out my own syntax and how best to fit an ml-like language to Go concepts. I do really like OCaml, but I wanted to make something of my own rather than just port an existing language, in much the same way that Elm is a lot like Haskell but also its own thing. I guess that's not entirely practical, but I didn't set out to be entirely practical, that's less fun :)

Hope that makes sense!

from braid.

typesanitizer avatar typesanitizer commented on July 2, 2024

One downside I could see is that OCaml has issues on Windows and incomplete support, I'm pretty sure

While I know that it isn't as smooth as on Linux, there is an answer on SO that probably works. On the support bit, yes, you may have a bit more trouble finding help, I agree, but usually people on Reddit/OCaml Disqus are happy to help.

It seemed neater to write the compiler in the language it is for — this means it only has the Go compiler (and some Go tooling) as dependencies;

By that logic, the C/C++/Go compilers should be written in assembly 😛

Elm is a lot like Haskell but also its own thing

In Elm's case (at least the way I understand it from the outside), it is that Haskell has a lot of complexity which Evan thinks is not necessary for writing good front-end applications. However, in your case, it seems to me that Braid is much closer to OCaml (at least, in terms of target features).

However, the bit about "fun" does make sense to me. It may not be as exciting to contribute to an already existing project as to create something new by yourself and freely experiment with things.

Thanks for the answer!

from braid.

Related Issues (1)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.