[Haskell-cafe] A Procedural-Functional Language (WIP)

Joachim Durchholz jo at durchholz.org
Mon Dec 12 16:10:09 UTC 2016

Sorry for replying so late, this got stuck in the outbox.

Am 26.10.2016 um 17:48 schrieb Rik Howard:
>     Also, subtypes and binary operators do not really mix; google for
>     "parallel type hierarchy". (The core of the problem is that if you
>     make Byte a subtype of Word, declaring the (+) operator in Word as
>     Word -> Word will preclude Byte from being a subtype because you
>     want a covariant signature in Byte but that violates subtyping rules
>     for functions. So you need parametric polymorphism, but now you
>     cannot use the simple methods for subtyping anymore.)
> Clearly there is more to be done in this area.

That's a pretty well-explored part of design space.
Unfortunately, there seems to a really hard trade-off between things 
like modularity / extensibility, freeness from surprises, and soundness, 
so most languages to not offer this.

Striking a useful compromise is hard.
Even integer arithmetic isn't easy; e.g. what's the type and value of 
(byte 254)+(byte 254)? For some languages it is (word 510), for some it 
is (word -4), some say (bigint 510). I have seen strong arguments 
brought forward for each of these answers, but since these solutions are 
mutually incompatible, and whatever answer you pick for your language, 
you have to ignore the arguments in favor of the other choices.

>     I think you should elaborate similarities and differences with how
>     Haskell does IO, that's a well-known standard it is going to make
>     the paper easier to read. Same goes for Clean&Mercury.
> Something like that is addressed in Related Work.  Clean is already on
> the list but it sounds, from your comments and those of others, as if
> Mercury may be worth including as well.

Just for reference, e.g. which of your concepts are the same in the 
other languages, which are different and what are the differences.

>     It's hard to tell whether it is actually new, too many details are
>     missing.
> Certainly you have spotted the vagueness in the types however I think
> that that issue can be momentarily set aside from the point of view of
> novelty.

Novelty is entirely uninteresting.
Usefulness is.
Novelty *may* point out new ways to constructing something that's more 
useful than we have, but you need to point out how the novelty will help 
with that if you want to raise serious interest in your work.


More information about the Haskell-Cafe mailing list