Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> Go is also well-researched language

Concurrency in Go certainly is, the rest is not, definitely.

> its syntactic clumsiness and shortcomings (hipsters are blogging about) came from being statically typed, just admit it

That's the kind of dismissive and arrogant attitude I often hear from gophers. Doesn't make me want to be part of that community.

Have a look at the Cyclone language. It has generics,tagged unions and pattern matching AND it is statically typed.

https://cyclone.thelanguage.org/wiki/User%20Manual/

Saying that statically typed languages cannot be expressive is pure FUD. Go designers just didn't strike the right balance between features and minimalism, because they didn't care. Without its concurrency model, Go is not much.



> Saying that statically typed languages cannot be expressive is pure FUD.

Could you, please, show us an example from the rosettacode.org website? Generic Quicksort, perhaps?


Take a look at OCaml, or any ML variant language (aside from Rust, which is more C++ than ML in my opinion anyway) for that matter, for a static typed language with a good implementation of generic types.


Would you mind elaborating why you think that Rust doesn't have a good implementation of generic types?


The signatures can get really unwieldy compared to generics in other languages. As I understand it, the Rust team is working on this.


I think you're comparing Rust to a language with ad-hoc polymorphism like C++ (where you pay for the somewhat simpler signatures with confusing template instantiation errors), and I'm very glad we didn't follow the C++ route. Rust's generics are very similar to those of Haskell.

The only major generics-related issue that is getting some significant thought is the ability to have the automatically derive the return type on top-level functions, which is not something that is common in other statically typed languages (only C++ and those with whole program type inference, which has its own set of drawbacks).


I took the Dan Grossman's PL course, so I appreciate how good Standard ML is.)


No idea what you're looking for, but just for the record:

  import List(partition)

  qs [] = []
  qs (pivot:rest) = qs smaller ++ pivot : qs larger
      where (smaller,larger) = partition (< pivot) rest
Haskell 98, the (polymorphic) type is "Ord a => [a] -> [a]"


Haskell is an exception. Haskell is two distinct languages in one - one for defining types, and one for expressions.)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: