Gábor Lehel <illiss...@gmail.com> writes:

> Is there any sensible meaning for bangs on return types? I've been
> trying to think this through but not necessarily succeeding.

Not knowing Clean in any detail, I've always just thought that a type
signature of, say:

          something :: !Foo -> Bar

would mean the same as, in Haskell:

          something :: Foo -> Bar
          something foo = foo `seq` ...

In this case, there's no point to a strict return type, since it would
boil down to "x `seq` x", which is just  "x".

But it seems that a lot of these discussions are about considering Foo
and !Foo distinct types, which would mean that you can no longer, say,
add a strict and a lazy integer - at least not with the current Num
instance.  I find this line of thought very confusing.

> This does seem a bit excessive. As a start, I don't remember anyone
> asking for control over (un)boxedness, so hopefully we could jettison
> that part of it?

Uh, you mean like in IOUArrays, the UNPACK pragma, or
-funbox-strict-fields?  Unboxing is an important optimization, but
perhaps the current feature set suffices.

-k
-- 
If I haven't seen further, it is by standing in the footprints of giants

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to