Live data from Hacker News

Show HN: Fuse – statically typed functional programming language

fuselang.org

11–20 of 49 posts

Re: Show HN: Fuse – statically typed functional programming language

#12

Superficially, I find the syntax very untuitive to read. Most languages opt to use for typevariables. Is there a specific reason you chose to deviate from that and use []?

I actually can't think of any functional languages that use for type variables (I'm sure there's one or two, but it can't be common)

Re: Show HN: Fuse – statically typed functional programming language

#13

Superficially, I find the syntax very untuitive to read. Most languages opt to use for typevariables. Is there a specific reason you chose to deviate from that and use []?

This is only true for C-style languages? Flix uses square brackets, as does Effekt, and Nim, as well as Python. Probably many more I'm missing. Gleam even uses normal parens.

Re: Show HN: Fuse – statically typed functional programming language

#15
post #12

Superficially, I find the syntax very untuitive to read. Most languages opt to use for typevariables. Is there a specific reason you chose to deviate from that and use []?

I actually can't think of any functional languages that use for type variables (I'm sure there's one or two, but it can't be common)

F# does, I think

Re: Show HN: Fuse – statically typed functional programming language

#16
post #2

It's nice to see a GRIN backend in the wild! It looks like a tidy little functional language - a small, easily grasped syntax surface and generally clear semantics. That you've got it to the point that it can compile and run proper programs is a great achievement for a solo dev project! The string type in the standard library isn't Unicode-aware, might be worth just noting that. Unicode support can be a big undertaki…

First of all thanks for all the feedback and looking into it, appreciate it! Yeah GRIN is a great project, it took a lot of debugging and analysis to make it compile 100% especially with monomorphization involved. I'll look into Unicode support, makes total sense. Didn't scope it in initially. I can fix the site ligatures too, that's a fair remark. > I don't really understand why you have an IO monad. The language is…

I’d really encourage you with Unicode support, as frustrating as of a side track it may be - I’ve had fun dogfooding my hobby languages by writing small web servers and CLI utilities. Even if it just generates part of your shell prompt!

Re: Show HN: Fuse – statically typed functional programming language

#17
post #3

I wish you took Haskell's syntax as such. Why did you mix rust and possibly other stuff with it?

Haskell is a great language with a really advanced type-system, although I found its syntax hard to read at times especially as I was exploring the language at first. On the other hand I really liked how Rust syntax was defined in terms of ADTs, Traits & Methods Impls, with type signatures required for functions. Hence I wished for a similar functional language that has such write-style and type concepts, but strippi…

Just as general feedback, I think your experience matches up with more software developers than the GP. Haskell is really obtuse and unreadable for those who are not accustomed to it.

Re: Show HN: Fuse – statically typed functional programming language

#18
post #7

Love to see a real-world example of GRIN! trait Functor[A]: fun map[B](self, f: A -> B) -> Self[B]; This looks a little wacky to me. I see that you can write HKTs in their η-long form and refer to them unapplied (`Functor`). But I don't understand how I would use this syntax to attach something to the trait that _doesn't_ depend on `A`. For (a silly) example, trait SizedFunctor[A]: Functor[A]: type Size; fun size(sel…

`Self` isn't the applied type (`List[A]`), rather it's the type constructor of kind `* -> *` constrained by `Functor`. In the map example it gets desugared into:

  fun map[Self: Functor, A, B](self: Self[A], f: A -> B) -> Self[B];
Since `Self` is the unapplied constructor, `Self[B]` just means `Functor[B]` e.g. `List[B]` not `List[A][B]`.

The example you've shown with `SizedFunctor` is not currently supported, as support for associated types is not yet implemented. I got it on the roadmap tho!

Re: Show HN: Fuse – statically typed functional programming language

#19
post #12

Superficially, I find the syntax very untuitive to read. Most languages opt to use for typevariables. Is there a specific reason you chose to deviate from that and use []?

I actually can't think of any functional languages that use for type variables (I'm sure there's one or two, but it can't be common)

Depends on what you mean by functional language. I was considering main-stream languages that support some form of functional programming. So Rust, F#, C#, Kotlin, Swift, Typescript, etc

Re: Show HN: Fuse – statically typed functional programming language

#20
Off topic: what is the most convenient statically typed language that don't require compilation/transpilation? To run instead of bash or Python, but types are mandatory (not just hints like python).

I know jShell has been here like 10 years, but I'm not sure it's convenient to quickly write to a file, query a url, etc.

.ksh for Kotlin? Typescript (through Deno)? Lua?

Post reply on HN