Constant: I basically agree with the gist of your rephrasing it in terms of being relative to the species rather than independent of the species, but I would emphasize that what you end up with is not a “moral system” in anything like the traditional sense, since it is fundamental to traditional notions of morality that THE ONE TRUE WAY does not depend on human beings and the quirks of our evolutionary history and that it is privileged from the point of view of reality (because its edicts were written in stone by God or because the one true species-independent reason proves it must be so).
btw, you mean partial application rather than currying.
Currying is converting a function like the following, which takes a single n-tuple arg (n > 1) [“::” means “has type”]
-- f takes a 2-tuple consisting of a value of type ‘x’ and a value of type ‘y’ and returns a value of type ‘z’.
f :: (x, y) → z
into a function like the following, which effectively takes the arguments separately (by returning a function that takes a single argument)
-- f takes a single argument of type ‘x’, and returns a function that accepts a single argument of type ‘y’ and returns a value of type ‘z’.
f :: x → y → z
What you meant is going from
f :: x → y → z
to
g :: y → z
g = f foo
where the ‘foo’ argument of type ‘x’ is “hardwired” into function g.
Constant: I basically agree with the gist of your rephrasing it in terms of being relative to the species rather than independent of the species, but I would emphasize that what you end up with is not a “moral system” in anything like the traditional sense, since it is fundamental to traditional notions of morality that THE ONE TRUE WAY does not depend on human beings and the quirks of our evolutionary history and that it is privileged from the point of view of reality (because its edicts were written in stone by God or because the one true species-independent reason proves it must be so).
btw, you mean partial application rather than currying.
Currying is converting a function like the following, which takes a single n-tuple arg (n > 1) [“::” means “has type”]
-- f takes a 2-tuple consisting of a value of type ‘x’ and a value of type ‘y’ and returns a value of type ‘z’.
f :: (x, y) → z
into a function like the following, which effectively takes the arguments separately (by returning a function that takes a single argument)
-- f takes a single argument of type ‘x’, and returns a function that accepts a single argument of type ‘y’ and returns a value of type ‘z’.
f :: x → y → z
What you meant is going from
f :: x → y → z
to
g :: y → z
g = f foo
where the ‘foo’ argument of type ‘x’ is “hardwired” into function g.