[Haskell-cafe] some ideas for Haskell', from Python
Bas van Dijk
v.dijk.bas at gmail.com
Tue Jan 20 07:54:29 EST 2009
On Wed, Jan 14, 2009 at 3:59 PM, Manlio Perillo
<manlio_perillo at libero.it> wrote:
> 2) In Python it is possible to import modules inside a function.
>
> In Haskell something like:
>
> joinPath' root name =
> joinPath [root, name]
> importing System.FilePath (joinPath)
I just like to point out the dependently typed, Haskell-like,
programming language Agda[1] which has a very nice module system with
the following features:
* Modules can contain other modules
* Modules can be locally opened. For example:
mapMaybe f m = let open Maybe in maybe nothing (just . f) m
* Renaming of important names: For example:
open Maybe renaming (Maybe to option; nothing to none; just to some)
* Parameterized modules: For example:
module Sort (A : Set) (_<_ : A -> A -> Bool) where
insert : A -> List A -> List A
insert y [] = y :: []
insert y (x :: xs) with x < y
... | true = x :: insert y xs
... | false = y :: x :: xs
See section 2.7 of the following Agda tutorial (an open minded Haskell
hacker should be able to read that section on its own):
http://www.cs.chalmers.se/~ulfn/darcs/AFP08/LectureNotes/AgdaIntro.pdf
Hopefully Haskell can borrow some of these ideas sometime.
regards,
Bas
[1] http://wiki.portal.chalmers.se/agda/
More information about the Haskell-Cafe
mailing list