FAQ
According to a post on LtU <http://lambda-the-ultimate.org/node/4923>, the
ML family workshop adopts languages -- including those not strictly derived
from ML -- that meet the slogan "Higher-order, Typed, Inferred, Strict."
Go is higher-order, in that it has first-class functions and lambda
expressions; it is typed; and it is strict. It is somewhat inferred. By
the definition put forth by the workshop, Go mostly fits in the ML family.
It doesn't really feel like it, but I (personally) attribute that mainly to
the lack of generics preventing some common functional idioms.

I found that simplified definition of "ML family" interesting.

Cheers

--- SER

--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Search Discussions

  • Eric S. at Apr 12, 2014 at 7:35 pm
    Go isn't always strict. It is closer to Objective-C where it is sometimes
    strict and sometimes dynamic. I wouldn't put it in the same category as ML.

      and it is strict
    >

    --
    You received this message because you are subscribed to the Google Groups "golang-nuts" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/d/optout.
  • Andy Balholm at Apr 12, 2014 at 8:43 pm

    On Saturday, April 12, 2014 12:35:50 PM UTC-7, Eric S. wrote:

    Go isn't always strict. It is closer to Objective-C where it is sometimes
    strict and sometimes dynamic. I wouldn't put it in the same category as ML.
    In the context of ML, strict doesn't mean "strict about types". It means
    "not lazy like Haskell".

    I think their definition of the ML family is pretty broad, but not quite
    broad enough to include Go, since by "inferred" they probably mean
    "whole-program type inference".

    --
    You received this message because you are subscribed to the Google Groups "golang-nuts" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/d/optout.
  • Bryan Mills at Apr 13, 2014 at 3:16 am

    On Friday, April 11, 2014 11:10:43 PM UTC-4, Sean Russell wrote:
    According to a post on LtU <http://lambda-the-ultimate.org/node/4923>,
    the ML family workshop adopts languages -- including those not strictly
    derived from ML -- that meet the slogan "Higher-order, Typed, Inferred,
    Strict." Go is higher-order, in that it has first-class functions and
    lambda expressions; it is typed; and it is strict. It is somewhat
    inferred. By the definition put forth by the workshop, Go mostly fits in
    the ML family. It doesn't really feel like it, but I (personally)
    attribute that mainly to the lack of generics preventing some common
    functional idioms.

    I found that simplified definition of "ML family" interesting.
    In the sense intended by LtU, Go is neither "higher-order" nor "inferred".

    By "higher-order" they mean "has a parametric type system", and by
    "inferred" they mean Hindley-Milner inference across entire function
    bodies, not just the automatic-declaration inference provided by Go's ":=".

    Go is a nice language, but it's not in the ML family by any stretch.


    --
    You received this message because you are subscribed to the Google Groups "golang-nuts" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/d/optout.
  • Jesper Louis Andersen at Apr 13, 2014 at 1:48 pm

    On Sun, Apr 13, 2014 at 5:16 AM, Bryan Mills wrote:

    Go is a nice language, but it's not in the ML family by any stretch.

    In addition, Go lacks a number of important ML family traits:

    * Everything is an expression - Go has two syntactic classes, Expressions
    and Statements
    * Mostly Pure - Go favors destructive updates and ephemeral data
    structures. Also the imperative fragment is not in the back seat of the
    language.
    * Algebraic datatypes - The most grave omission from Go. There is no
    implicit product type. There is no sum type with recursion. This riddles
    the language with null-checks, and x, err := ... constructs where they
    could have been avoided. The product type can somewhat be simulated through
    return values and explicit struct notation. But functions take more than
    one argument, which is also very non-ml like.

    It is like Java claiming to be "functional" just because they now have a
    lambda. We just pull the next rabbit from the hat which ML has and language
    X lacks and *demand* they add that. Until the language is ML :)

    --
    J.

    --
    You received this message because you are subscribed to the Google Groups "golang-nuts" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/d/optout.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupgolang-nuts @
categoriesgo
postedApr 12, '14 at 3:10a
activeApr 13, '14 at 1:48p
posts5
users5
websitegolang.org

People

Translate

site design / logo © 2021 Grokbase