On Dec 20, 2011, at 8:05 PM, Tillmann Rendel wrote:
> Hi,
>
> Robert Clausecker wrote:
>> Image you would create your own language with a paradigm similar to
>> Haskell or have to chance to change Haskell without the need to keep any
>> compatibility. What stuff would you add to your language, what stuff
>> would you remove and what problems would you solve completely different?
>
> I would try to improve the language's support for the embedding of
> domain-specific embedded languages (aka. combinator libraries). Such
> embedding requires the integration of a domain-specific language's syntax,
> static semantics and dynamic semantics. Some (more or less far fetched) ideas
> about these three areas follow.
>
>
> To support better syntax for embedded languages, provide more rebindable
> syntax à la do-notation. For example, (if c then t else e) currently desugars
> to (case c of False -> e; True -> t). But it could also desugar to (if' c t
> e) where if' is a method of a type class. For (c : Bool), the standard
> library would provide an instance of this type class, but for other condition
> types, third-party libraries could provide it. Alternatively, if-then-else
> could even desugar to whatever if' is in scope. A similar idea is currently
> applied to Scala in the scala-virtualized project. A large part of the
> language should be virtualized this way, including pattern matching, lambda
> expressions, maybe even type or class declarations.
>
> To support better static semantics for embedded languages, provide better
> type-level computation, including some form of closed-world reasoning (for
> example, backtracking or closed pattern matching) and a reification of names
> at the type level, so that type-level computations can reason about the
> binding structures of expressions-level code. Note that I am interested in
> the static structure of terms, not their dynamic behavior, so this is
> different from dependent types.
>
> With Haskell being a fine general-purpose programming language, and even
> having a good foreign language interface, there is already plenty of support
> for the specification of dynamic semantics. Nevertheless, for domain-specific
> embedded compilers, it would possibly be nice to access a Haskell compiler at
> runtime, to compile snippets of Haskell code and dynamically link them into
> the currently running program.
So in other words, you would like Haskell to simultaneously become more like
Lisp and more like Agda? :-)
Cheers,
Greg
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe