On Thu, Aug 24, 2017 at 5:14 PM <oju...@gmail.com> wrote:

> <genType1, genType2> func (r genType1) f(x, y genType2) (z getType2, err
> error)
>
>
In a language such as OCaml, you would define `f` as:

let f r (x, y) = ...

And the system would infer the type of `f` automatically. In your case it
would probably infer something like

val f : 'a -> 'b -> 'b -> ('b * error)

which is really something along the lines of

forall 'a .
forall 'b .
val f : 'a -> 'b -> 'b -> ('b * error)

As an aside, people often say `alpha` rather than `'a` and `beta` rather
than `'b` when speaking the type out loud.

As another aside: if you don't get the above, you wouldn't have been able
to pass the first course at my university back in the day (around 2000). I
think we can expect people who become proficient programmers over time to
eventually grasp an introductory programming course. Mind you, many
languages aside from Go defines the type-level abstraction, so it is hardly
expected to be "new" anymore to a great large set of people.

Personally, I find pointer handling far more complex than the above :)

-- 
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+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to