On Feb 18, 2009, at 4:43 AM, Max Bolingbroke wrote:
2009/2/18 Sterling Clover <s.clo...@gmail.com>:
The punchline: With GHC plugins, it should be possible, and
reasonable, to
add a proper unit system for Haskell.
Alas, GHC plugins cannot change the type system - only meddle with the
compilation strategy or analyse the code and suchlike. I'm working
with Simon Peyton Jones to get plugins integrated fully into GHC
(parts of it have been commited already) but we're both busy and so
progress is slow. I don't think any GSoC projects should take a
dependency on it being both integrated into GHC and stable in time for
the summer.
Thanks for the update on plugins! I look forward to trying them out
from the GHC mainline at some point. I don't think that units as I
envision them would need to mess with the type system directly, but
could be implemented simply as a static analysis step, such as you
describe. Units really do something quite different from standard
types, and unit-correctness seems orthogonal to type correctness. A
simple plugin would, e.g., allow unit annotations as distinct from
type annotations (although, with an appropriate preprocessor step,
they could, with cleverness, be written jointly), and simply track
unit usage throughout the code to ensure correctness. It would, I
assume, only need to operate on things which belonged to the Num
typeclass to begin with, and assume that all unannotated numbers were
scalars. Even lacking any sophisticated features, I would find this
very useful, and certainly easier to envision than a more general
extension to the type system that made unit tracking feasible, but
yet, somehow, didn't veer fully into either simulated or actual
dependent typing.
So I guess I'll just keep this idea in mind and pitch it for next
year's GSoC. :-)
Cheers,
Sterl.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe