[Haskell] getArgs, maxBound, float division: pure functions?

Bjorn Lisper lisper at it.kth.se
Wed Oct 12 06:04:31 EDT 2005

John Meacham:
>On Wed, Oct 12, 2005 at 12:05:39AM -0400, David Menendez wrote:
>> In principle, you could use seperate types to distinguish floats with
>> different rounding modes, but I imagine this would be difficult or
>> annoying to implement.
>I think it would make more sense to have different operations for each
>rounding mode. That matches the reality of the situation more and you
>don't want to have to do tons of type conversions when you need to
>operate on something with different rounding modes. of course, then you
>could declare several 'newtypes' whose default Num instances were of
>specific rounding modes too.

A student of mine designed a special-purpose, pure functional language for
block-oriented matrix computations for his PhD. He was very careful to give
the language a good design also regarding floating-point computations. His
design choice, as regards rounding, was to allow the compiler to choose
rounding mode by default (thus allowing more freedom for optimization),
while providing a set of special arithmetic operators, with specified
rounding modes, to use when more explicit control is needed.

He also proposed a special construct "letctrl ... in e", where the "..." are
a list of directives telling how to interpret and evaluate the expression
e. One possible directive is "RoundingMode = ..." to set the rounding mode
locally in e. Other directives control, for instance, whether optimizations
like x*0.0 -> 0.0 are allowed in e, whether to force strict evaluation of
all subexpressions (so optimizations cannot affect exceptions), to set
allowed miminum accuracy, etc.

The language has exception handling (including a "handle" construct to catch
exceptions), which also takes care of floating-point exceptions.

If Haskell ever gets redesigned to give better support for numerical
computations, then I think this work is worth a look. Alas, it is not
well-published, but the PhD thesis should be possible to order from the
Dept. of Information Technology and Microelectronics at KTH. I also have a
few copies to give away of someone is interested.

Here's the reference:

        AUTHOR = {N. Peter Drakenberg},
        TITLE = {Computational Structure and Language Design},
	SCHOOL = {Dept.\ of Information Technology and Microelectronics, KTH},
	ADDRESS = {Stockholm},
	YEAR = {2004},
	MONTH = sep,

Björn Lisper

More information about the Haskell mailing list