Re:The Last Hope for Scala's Infinity War [video]
by eecc on Wednesday July 11, 2018 @05:52PM
(#17510573)
Partial functions are undefined outside of the part that is given, therefore the result of an input that falls in that zone is undefined. This is not good, how do you deal with it, exceptions? Termination? You must make the function total by extending it to a version that gives some result to manipulate whatever the input (or restrict the domain to make it again total.)
[ Parent
| on HN ]
Re:The Last Hope for Scala's Infinity War [video]
by tunesmith on Wednesday July 11, 2018 @06:36PM
(#17510797)
So the idea would be to allow currying, but not allow partial application of the currying?
Re:The Last Hope for Scala's Infinity War [video]
by philipkglass on Wednesday July 11, 2018 @06:47PM
(#17510840)
Partial application of functions is fine. Partial functions would be disallowed.
Here's a function that is only partial, because it can throw an exception instead of returning a value when b is zero:
def divide(a: Int, b: Int): Int = a / b
Here's a total function to accomplish the same basic goal:
def divide(a: Int, b: Int): Try[Int] = Try(a / b)
This function always returns a value of the type it's declared to return.
Re:The Last Hope for Scala's Infinity War [video]
by tunesmith on Wednesday July 11, 2018 @07:31PM
(#17511067)
Thanks for that clarification. I had googled for "partial function vs currying", which led me to results for "partial function application", which was really about partial application of functions, not partial functions. :-/
I swear, probably 80% of my problems in professional life are from overloaded terms.
Re:The Last Hope for Scala's Infinity War [video]
by AnimalMuppet on Wednesday July 11, 2018 @08:10PM
(#17511239)
By "overloaded", do you mean "having multiple definitions"? Or do you mean "carrying too much weight"?
;-)
Re:The Last Hope for Scala's Infinity War [video]
by dllthomas on Thursday July 12, 2018 @12:18PM
(#17516046)
> Partial functions would be disallowed.
Some partial functions would be disallowed, assuming you aren't including an actual totality check (which would exclude all partial functions and some total ones).
Re:The Last Hope for Scala's Infinity War [video]
by eecc on Thursday July 12, 2018 @02:09AM
(#17512519)
Currying always returns another function (if I’m not mistaken it doesn’t even evaluate anything yet) so it’s another thing and the compiler has a complete understanding of what will happen at runtime. With a partial it won’t be able to do that. The later comment with the Try[] is a great example