
What I would really like to see is locally scoped imports but with parameterized modules. (so modules could take types and values as parameters) The places where I most want a feature like this is when I have a group of helper functions that need a value that is outside the modules scope, but that in general doesn't change. Usually we just curry the functions, but that generates a lot of wasted code. A good example might be the token parsershttp://legacy.cs.uu.nl/daan/download/parsec/parsec.html#Lexical%20analysisin parsec. Rather than have something like this: whiteSpace= P.whiteSpace http://legacy.cs.uu.nl/daan/download/parsec/parsec.html#whiteSpace lexer lexeme = P.lexeme lexer symbol = P.symbol http://legacy.cs.uu.nl/daan/download/parsec/parsec.html#symbol lexer natural = P.natural http://legacy.cs.uu.nl/daan/download/parsec/parsec.html#natural lexer ... We could do something like: import ParsecToken lexer Having an import/module feature like this would replace almost all cases where someone might wish for a macro system for Haskell.
Hmm, looks nice, and sensible. But as soon as you've got \N{....} syntax I want:
"foo\E{show i}bar"
"foo"++show i++"bar"
Change the language - save two characters.
For simple cases, doing "foo" ++ show i ++ "bar" isn't bad at all, but when
you have five or six or ten (show i)s that you want to mix in, it can get
pretty hard to read.
On Wed, Jan 14, 2009 at 11:43 AM, Ketil Malde
"Neil Mitchell"
writes: 1) In a Python string it is available the \U{name} escape, where name is a character name in the Unicode database.
As an example: foo = u"abc\N{VULGAR FRACTION ONE HALF}"
Why not:
import Unicode.Entities as U
foo = "abc"++U.vulgar_fraction_one_half
Hmm, looks nice, and sensible. But as soon as you've got \N{....} syntax I want:
"foo\E{show i}bar"
"foo"++show i++"bar"
Change the language - save two characters.
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)
It does mean you need to read an entire file to see
Well, then you might as well allow multiple modules per file as per the recent discussion. And multi-module files will possibly let you achieve the desired encapsulation without actually changing the language.
-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