Hi Igor,

> Now I've found my main problem with epigram papers: too many unknown
> terms. There are several kinds of arrows (in View From The Left) and I'm not
> sure what means

> => illustrative purposes, not element of Epigram ?

ASCII version of

> |-> Epigram syntax ("return" or "by")

meaning return the value of the expression right of the arrow

"by" is '<=' followed by 'case','rec' or 'view' and the variable you want to
analyse

> ~> type coercion, code transformation, etc ?

think 'eval'

> |- inferred by typesystem's logic ?

used for stating that a typing (right of |-) holds in the context given left of
the turnstile

> ||- the same as above ?

yes but now for labelled types, about which you don't have to care much when
you're programming since epigram uses these in the background to aid the
programming process. How epigram engages dependent types itself.

> |> elaborated as (what is it?)
> ---------------- below this line is logically derived from above this
> line ?

Gentzen style inference system. Used to give the rules of the typing relation.

But as 'The view from the left' introduces the design of epigram i recommend
you to read the epigram tutorial
http://www.cs.nott.ac.uk/~ctm/epigram-notes.ps.gz as well where


                              ⎛ ⎞ ⎡ ⎤ 
        ∗ ∀   λ   →  ⋀  ⇒  ⇐  ⎝ ⎠ ⎣ ⎦ ────
        * all lam -> /\ => <= ( ! [ ! ---
                              ! ) ! ]

suffices as the main syntax reference.

> And what is "eliminator"? What is it supposed to do?

To get anywhere from a programs input in type theory you have to invoke an
eliminator specific to the inputs type on it. Examples are:

        pair:           projection
        enumeration:    case analysis
        function:       application
        number:         induction

By the way, how the epigram system uses eliminators pretty much gives you what
you once asked for on the curry mailling list:

        http://www.informatik.uni-kiel.de/~mh/curry/listarchive/0305.html

namely to instantiate a variable from type information alone.
Just for the fun of it i used Sergio Antoys solution

        http://www.informatik.uni-kiel.de/~mh/curry/listarchive/0309.html

to write some scopedness and typedness constraints on suitable representation
of terms found in the epigram tutorial:

        http://www.informatik.uni-kiel.de/~seha/scpdnss.curry
        http://www.informatik.uni-kiel.de/~seha/tpdnss.curry

Alas, this is 'faking it' stuff as these constraints don't feed any more
information to the compiler. 

And i should make clear, that invoking eliminators in epigram happens during
elaboration to make sure you write exhaustive pattern matching programs and not
to patch free variables with constructor forms at runtime.


Best regards,
Sebastian

Reply via email to