News for hackers. Stuff that matters.
Re:Near Future of Programming Languages [pdf] by ryanmarsh on Monday October 30, 2017 @08:47AM (#15584576)
type safety is becoming a hugely desired feature for developers again

I don’t think anyone ever hated type safety, I think they hated verbose syntax and unfortunately conflated the two.

Now we’re finding a happy medium with compiler type inference and people are like, wait what?

Re:Near Future of Programming Languages [pdf] by smaddox on Monday October 30, 2017 @03:49PM (#15588286)
Dynamic typing is objectively much more flexible and easier to prototype in. Static typing is much easier to build large and robust systems in. Eventually we'll get to the point where everything you can do in dynamicly languages can be done in staticly typed languages (more verbosely), but we're not there yet.

For example, functions that return a different type depending on the values passed in are a useful pattern, but not allowed in staticly typed languages, except those with dependent types (Idris) or runtime downcasting (Go). There's always a way to acheive the same thing, but usually at the cost of safety or much more verbosity.

This is actually, IMHO, one way Go strikes a happy balance between static and dynamic typing. It provides a (runtime) safe and low-verbosity way to write dynamically-typed code, i.e. `interface{}`. Rust is slated to get something similar with `impl Trait` values.

Re:Near Future of Programming Languages [pdf] by tom_mellior on Monday October 30, 2017 @06:17PM (#15589461)
> For example, functions that return a different type depending on the values passed in are a useful pattern, but not allowed in staticly typed languages, except those with dependent types (Idris) or runtime downcasting (Go). There's always a way to acheive the same thing, but usually at the cost of safety or much more verbosity.

Look at this verbose OCaml:

    type my_return_type = AFloat of float | AnInt of int | AString of string;;

    let my_fun n =
        if n < 0 then AString "negative"
        else if n == 0 then AFloat 0.0
        else AnInt n

    # my_fun (-4);;
    - : my_return_type = AString "negative"
    # my_fun 0;;
    - : my_return_type = AFloat 0.
    # my_fun 42;;
    - : my_return_type = AnInt 42
(But yes, to use these values you have to do pattern matching, and if you're in a FUD mood, that is "runtime downcasting" and incurs a "cost of safety".)
Re:Near Future of Programming Languages [pdf] by smaddox on Tuesday October 31, 2017 @09:57AM (#15593237)
Yes, you can always generate a new union type for your return type and then pattern match on it. That is certainely better than C where you must use unsafe tagged unions or void pointers. It is more verbose than in dynamic duck-typed languages, though I'll give you that it's quite compact in OCaml.

In a dependently typed language, you could reduce verbosity at the use site as well as avoid the extra runtime branch.

Re:Near Future of Programming Languages [pdf] by tom_mellior on Tuesday October 31, 2017 @10:12AM (#15593340)
So how exactly would you write the above five lines of OCaml in fewer than five lines in Idris?
Re:Near Future of Programming Languages [pdf] by smaddox on Tuesday October 31, 2017 @03:02PM (#15595676)
The verbosity is not in the function definition, its in the match expression needed at _every single call site_. In Idris, the definition would be similar length or longer, but call sites would not need a match expression.
Re:Near Future of Programming Languages [pdf] by vorg on Friday November 03, 2017 @01:12AM (#15616849)
> provides a (runtime) safe and low-verbosity way to write dynamically-typed code, i.e. `interface{}`

Since Go 1.9 was released with its new Type Aliases feature a few months ago, the verbosity is even lower. By putting `type any = interface{}` somewhere in your package, you can just write `any` instead of the verbose `interface{}` everywhere you want some dynamic typing.

Re:Near Future of Programming Languages [pdf] by mrkgnao on Monday October 30, 2017 @08:55AM (#15584630)
The response to the recent Rich Hickey talk definitely points toward "dynamic typing as its own solution" (instead of a stop-gap until someone makes static typing less "verbose") being a popular view nowadays.

https://news.ycombinator.com/item?id=15464423