caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* what do I need to know to understand camlp4
@ 2010-09-23 14:56 ben kuin
  2010-09-23 15:21 ` [Caml-list] " David MENTRE
                   ` (4 more replies)
  0 siblings, 5 replies; 15+ messages in thread
From: ben kuin @ 2010-09-23 14:56 UTC (permalink / raw)
  To: caml-list

hi
I'm a Ocaml n00b (without any degree). Therefore I have a faible for
everything that makes Ocamls syntax more algol/imperative like [1]. An
example would be an extension like 'newref'
(http://bitbucket.org/johannes/newref/wiki/Home), which turns:

    print_int !i       into       print_int $i    (* newref *)

so I fiercely try to also perlify the declaration that turns

     let i = ref 3     into        let $i = 3     (* my idea ... *)

but camlp4 makes my head spin. The syntax is very difficult and in a
lot of camlp4 documentation there is AST modification involved, which
is a subject I don't get although I made several attempts. And simple
program transformation with camlp4 (using concrete syntax) is nowhere
documented.

Could someone give any idea how I can begin to understand how to write
simple camlp4 extensions?

thanks
ben

[1] please don't kill me


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Caml-list] what do I need to know to understand camlp4
  2010-09-23 14:56 what do I need to know to understand camlp4 ben kuin
@ 2010-09-23 15:21 ` David MENTRE
  2010-09-23 19:50   ` ben kuin
  2010-09-23 15:25 ` bluestorm
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 15+ messages in thread
From: David MENTRE @ 2010-09-23 15:21 UTC (permalink / raw)
  To: ben kuin; +Cc: caml-list

Hello,

2010/9/23 ben kuin <benkuin@gmail.com>:
> I'm a Ocaml n00b (without any degree). Therefore I have a faible for
> everything that makes Ocamls syntax more algol/imperative like [1].

If you are new to OCaml, I strongly advise you to learn it the way it
is, with its syntax (somewhat quirky[1], I admit). You are going to
learn a *lot* more than trying to fit it in your current imperative
knowledge.

Sincerely yours,
david

[1] Compared to other programming languages. I know the syntax is the
way it is for precise reasons (currying, closer to mathematical
notation, ...).


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Caml-list] what do I need to know to understand camlp4
  2010-09-23 14:56 what do I need to know to understand camlp4 ben kuin
  2010-09-23 15:21 ` [Caml-list] " David MENTRE
@ 2010-09-23 15:25 ` bluestorm
  2010-09-23 16:23   ` Jake Donham
  2010-09-23 16:28 ` Michael Ekstrand
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 15+ messages in thread
From: bluestorm @ 2010-09-23 15:25 UTC (permalink / raw)
  To: ben kuin; +Cc: caml-list

> Could someone give any idea how I can begin to understand how to write
> simple camlp4 extensions?

For an accessible introduction to modern (>= 3.10) Camlp4, you may be
interested in Jake Donham's blog post series "Reading Camlp4" :
http://ambassadortothecomputers.blogspot.com/search/label/camlp4
You will also find valuable (though incomplete) information on the
camlp4 wiki : http://brion.inria.fr/gallium/index.php/Camlp4

The older version of camlp4 (< 3.10, now called camlp5) also provides
a documentation
http://caml.inria.fr/pub/docs/tutorial-camlp4/index.html , and you can
also use to Martin Jambon's tutorial
http://martin.jambon.free.fr/extend-ocaml-syntax.html (for the older
camlp4).


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Caml-list] what do I need to know to understand camlp4
  2010-09-23 15:25 ` bluestorm
@ 2010-09-23 16:23   ` Jake Donham
  2010-09-23 18:49     ` ben kuin
  0 siblings, 1 reply; 15+ messages in thread
From: Jake Donham @ 2010-09-23 16:23 UTC (permalink / raw)
  To: OCaml List

On Thu, Sep 23, 2010 at 8:25 AM, bluestorm <bluestorm.dylc@gmail.com> wrote:
> For an accessible introduction to modern (>= 3.10) Camlp4, you may be
> interested in Jake Donham's blog post series "Reading Camlp4" :
> http://ambassadortothecomputers.blogspot.com/search/label/camlp4

You can also see the articles in sequence at

  http://ambassadortothecomputers.blogspot.com/p/reading-camlp4.html

which I recommend since later articles depend on earlier material.

Jake


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Caml-list] what do I need to know to understand camlp4
  2010-09-23 14:56 what do I need to know to understand camlp4 ben kuin
  2010-09-23 15:21 ` [Caml-list] " David MENTRE
  2010-09-23 15:25 ` bluestorm
@ 2010-09-23 16:28 ` Michael Ekstrand
  2010-09-23 16:35 ` Sylvain Le Gall
       [not found] ` <1285259219.1820.15.camel@knine>
  4 siblings, 0 replies; 15+ messages in thread
From: Michael Ekstrand @ 2010-09-23 16:28 UTC (permalink / raw)
  To: caml-list

On Thu, 2010-09-23 at 16:56 +0200, ben kuin wrote:
> Could someone give any idea how I can begin to understand how to write
> simple camlp4 extensions?

Shameless self-plug, but I wrote a blog post this summer about my
experience figuring out how to do it.  I provide a walk-through and
explanation of a minimal syntax extension which adds lazy list pattern
matching support based on Batteries.  The URL:

http://www.elehack.net/michael/blog/2010/06/ocaml-syntax-extension

I do assume a basic knowledge of parsing context-free grammars, but a
generic tutorial on parsing with a tool such as Yacc can fill in that
gap.  The Wikipedia article[1] may also be helpful.

Once you've lept the hurdle of figuring out what pieces you need to
write and build a syntax extension, the remaining tricky part is to
figure out what pieces of the grammar you need to extend to accomplish
your objective.  For that, I consult the definition of the OCaml parser
in Camlp4OCamlParser.ml in the OCaml source tree.

- Michael

1. http://en.wikipedia.org/wiki/Context-free_grammar

-- 
Web/blog: http://elehack.net/michael
Jabber/Google Talk: this e-mail address
Twitter: http://twitter.com/elehack
mouse, n: a device for pointing at the xterm in which you want to type



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: what do I need to know to understand camlp4
  2010-09-23 14:56 what do I need to know to understand camlp4 ben kuin
                   ` (2 preceding siblings ...)
  2010-09-23 16:28 ` Michael Ekstrand
@ 2010-09-23 16:35 ` Sylvain Le Gall
       [not found] ` <1285259219.1820.15.camel@knine>
  4 siblings, 0 replies; 15+ messages in thread
From: Sylvain Le Gall @ 2010-09-23 16:35 UTC (permalink / raw)
  To: caml-list

On 23-09-2010, ben kuin <benkuin@gmail.com> wrote:
>
> Could someone give any idea how I can begin to understand how to write
> simple camlp4 extensions?
>

If you consider yourself as a n00b, don't start by camlp4. This is
probably the most difficult part of OCaml -- and to program camlp4 you
need to use OCaml standard syntax (or revised syntax, it depends if you
use antiquotations). 

If you still want to follow the hard path, as suggested elsewhere, Jake
Donham's blog posts are very good:

 http://ambassadortothecomputers.blogspot.com/p/reading-camlp4.html

Or if you are around, there is a tutorial session at CUFP:
http://cufp.org/conference/sessions/2010/camlp4-and-template-haskell
(but you need to subscribe).

Regards,
Sylvain Le Gall



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Caml-list] what do I need to know to understand camlp4
       [not found] ` <1285259219.1820.15.camel@knine>
@ 2010-09-23 18:43   ` ben kuin
  0 siblings, 0 replies; 15+ messages in thread
From: ben kuin @ 2010-09-23 18:43 UTC (permalink / raw)
  To: Michael Ekstrand, caml-list

thanks a lot for this information and the links, this is very helpful

On Thu, Sep 23, 2010 at 6:26 PM, Michael Ekstrand <michael@elehack.net> wrote:
> On Thu, 2010-09-23 at 16:56 +0200, ben kuin wrote:
>> Could someone give any idea how I can begin to understand how to write
>> simple camlp4 extensions?
>
> Shameless self-plug, but I wrote a blog post this summer about my
> experience figuring out how to do it.  I provide a walk-through and
> explanation of a minimal syntax extension which adds lazy list pattern
> matching support based on Batteries.  The URL:
>
> http://www.elehack.net/michael/blog/2010/06/ocaml-syntax-extension
>
> I do assume a basic knowledge of parsing context-free grammars, but a
> generic tutorial on parsing with a tool such as Yacc can fill in that
> gap.  The Wikipedia article[1] may also be helpful.
>
> Once you've lept the hurdle of figuring out what pieces you need to
> write and build a syntax extension, the remaining tricky part is to
> figure out what pieces of the grammar you need to extend to accomplish
> your objective.  For that, I consult the definition of the OCaml parser
> in Camlp4OCamlParser.ml in the OCaml source tree.
>
> - Michael
>
> 1. http://en.wikipedia.org/wiki/Context-free_grammar
>
> --
> Web/blog: http://elehack.net/michael
> Jabber/Google Talk: this e-mail address
> Twitter: http://twitter.com/elehack
> mouse, n: a device for pointing at the xterm in which you want to type
>
>


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Caml-list] what do I need to know to understand camlp4
  2010-09-23 16:23   ` Jake Donham
@ 2010-09-23 18:49     ` ben kuin
  2010-09-23 18:54       ` Jake Donham
  2010-09-23 19:06       ` Yoann Padioleau
  0 siblings, 2 replies; 15+ messages in thread
From: ben kuin @ 2010-09-23 18:49 UTC (permalink / raw)
  To: Jake Donham, caml-list

thanks Jake, after browsing through those articles I came to the
conclusion that for understanding and using camlp4 the notion of
quotations and antiquotations is fundamental. My absolute lack of
knowledge in this area might be a reason why I can't figure out how
camlp4 works.



On Thu, Sep 23, 2010 at 6:23 PM, Jake Donham <jake@donham.org> wrote:
> On Thu, Sep 23, 2010 at 8:25 AM, bluestorm <bluestorm.dylc@gmail.com> wrote:
>> For an accessible introduction to modern (>= 3.10) Camlp4, you may be
>> interested in Jake Donham's blog post series "Reading Camlp4" :
>> http://ambassadortothecomputers.blogspot.com/search/label/camlp4
>
> You can also see the articles in sequence at
>
>  http://ambassadortothecomputers.blogspot.com/p/reading-camlp4.html
>
> which I recommend since later articles depend on earlier material.
>
> Jake
>
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Caml-list] what do I need to know to understand camlp4
  2010-09-23 18:49     ` ben kuin
@ 2010-09-23 18:54       ` Jake Donham
  2010-09-23 19:06       ` Yoann Padioleau
  1 sibling, 0 replies; 15+ messages in thread
From: Jake Donham @ 2010-09-23 18:54 UTC (permalink / raw)
  To: ben kuin; +Cc: caml-list

On Thu, Sep 23, 2010 at 11:49 AM, ben kuin <benkuin@gmail.com> wrote:
> thanks Jake, after browsing through those articles I came to the
> conclusion that for understanding and using camlp4 the notion of
> quotations and antiquotations is fundamental. My absolute lack of
> knowledge in this area might be a reason why I can't figure out how
> camlp4 works.

Unfortunately quotations are a rather leaky abstraction. You need to
understand what is happening at the AST level to do anything
complicated, and to understand what's wrong when you get an error.
Anything you can do with quotations you can of course do directly with
the AST, since quotations are just syntactic sugar for the AST. But to
make the code readable quotations are essential.

Jake


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Caml-list] what do I need to know to understand camlp4
  2010-09-23 18:49     ` ben kuin
  2010-09-23 18:54       ` Jake Donham
@ 2010-09-23 19:06       ` Yoann Padioleau
  1 sibling, 0 replies; 15+ messages in thread
From: Yoann Padioleau @ 2010-09-23 19:06 UTC (permalink / raw)
  To: ben kuin; +Cc: Jake Donham, caml-list


On Sep 23, 2010, at 11:49 AM, ben kuin wrote:

> thanks Jake, after browsing through those articles I came to the
> conclusion that for understanding and using camlp4 the notion of
> quotations and antiquotations is fundamental. My absolute lack of
> knowledge in this area might be a reason why I can't figure out how
> camlp4 works.

Do you know how macros work in other languages ?
You could have a look at Lisp macros which are simpler than OCaml macros:
 http://cl-cookbook.sourceforge.net/macros.html
Understanding lisp macros could be a good step towards understanding ocaml macros.

> 
> 
> 
> On Thu, Sep 23, 2010 at 6:23 PM, Jake Donham <jake@donham.org> wrote:
>> On Thu, Sep 23, 2010 at 8:25 AM, bluestorm <bluestorm.dylc@gmail.com> wrote:
>>> For an accessible introduction to modern (>= 3.10) Camlp4, you may be
>>> interested in Jake Donham's blog post series "Reading Camlp4" :
>>> http://ambassadortothecomputers.blogspot.com/search/label/camlp4
>> 
>> You can also see the articles in sequence at
>> 
>>  http://ambassadortothecomputers.blogspot.com/p/reading-camlp4.html
>> 
>> which I recommend since later articles depend on earlier material.
>> 
>> Jake
>> 
>> _______________________________________________
>> Caml-list mailing list. Subscription management:
>> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
>> Archives: http://caml.inria.fr
>> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
>> Bug reports: http://caml.inria.fr/bin/caml-bugs
>> 
> 
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs




^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Caml-list] what do I need to know to understand camlp4
  2010-09-23 15:21 ` [Caml-list] " David MENTRE
@ 2010-09-23 19:50   ` ben kuin
  2010-09-24  0:15     ` Elias Gabriel Amaral da Silva
  2010-09-24  7:48     ` David MENTRE
  0 siblings, 2 replies; 15+ messages in thread
From: ben kuin @ 2010-09-23 19:50 UTC (permalink / raw)
  To: David MENTRE, caml-list

> If you are new to OCaml,
I'm not actually new to OCaml, but although  I've read every notable
book about OCaml and a lot of good code of other OCaml programs, OCaml
is still very foreign and counter-intuitive too me.

I know what you're might thinking now: why the hell does he still bother?

The 'problem' is that every time I read something in Python or worse
in Java/C++ I instantly miss the lightweight types/pattern matching
facility the ability to easily pass functions around. Then I read
functional Ruby or Scala code, and I begin to hate fp because in these
context it only makes the code harder to read.

So why does the whole world tries to hammer some functional features
into his imperative language? Why not maximize the imperative features
of a functional language? I know only one big project where the
explicitely use an imperative style in ocaml? But this code looks
(syntax wise) still too much functional for my taste.

> with its syntax (somewhat quirky[1], I admit).
For me it's worse, the syntax doesn't look quirky, but rather random
too me. It's not like cpp where the syntax is utterly pragmatic,
without any aesthetic claim. In OCaml it feels like someone
deliberately neglected the syntax.

> [1] Compared to other programming languages. I know the syntax is > the way it is for precise reasons (currying, closer to mathematical
> notation, ...).
Would you mind to list a few mathematical subjects that help me to
understand OCamls syntax?

thanks a lot
ben


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Caml-list] what do I need to know to understand camlp4
  2010-09-23 19:50   ` ben kuin
@ 2010-09-24  0:15     ` Elias Gabriel Amaral da Silva
  2010-09-24  7:35       ` David House
  2010-09-24  7:48     ` David MENTRE
  1 sibling, 1 reply; 15+ messages in thread
From: Elias Gabriel Amaral da Silva @ 2010-09-24  0:15 UTC (permalink / raw)
  To: ben kuin; +Cc: caml-list

2010/9/23 ben kuin <benkuin@gmail.com>:

>> [1] Compared to other programming languages. I know the syntax is > the way it is for precise reasons (currying, closer to mathematical
>> notation, ...).
> Would you mind to list a few mathematical subjects that help me to
> understand OCamls syntax?

I suppose one is lambda calculus. Function application is
left-associative in ML. That is, if $ is an operator such as a $ b
means "a applied to b", then it is more natural to interpret a $ b $ c
as (a $ b) $ c[1]. The apply "operator" is simply not written in
OCaml, so we write just a b c, and it means (a b) c.

This is due to the fact that a N parameter function is just a
single-parameter function that return a new "curried" function that
gets N-1 parameters - just like lambda calculus. So one could write
let f = a b in f c to make this explicit as well. (This gets a bit
more complicated with optional parameters)

In fact, you want some mathematical background on functional
programming aesthetics (and whatnot),
http://en.wikipedia.org/wiki/Lambda_calculus may be a good
introduction.

[1] Pervasives should define it. In fact, even though ** is
right-associative, it looks like any user-defined operator is
left-associative by default. So it works like Haskell:

# let ($) a b = a b;;
val ( $ ) : ('a -> 'b) -> 'a -> 'b = <fun>
# fun x y z -> x $ y $ z;;
- : ('a -> 'b -> 'c) -> 'a -> 'b -> 'c = <fun>
# let q = fun x y z -> x $ y $ z;;
val q : ('a -> 'b -> 'c) -> 'a -> 'b -> 'c = <fun>
# let q' = fun x y z -> (x $ y) $ z;;
val q' : ('a -> 'b -> 'c) -> 'a -> 'b -> 'c = <fun>
# let q'' = fun x y z -> x $ (y $ z);;
val q'' : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'b = <fun>
# let q''' = fun x y z -> x $ y z;;
val q''' : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'b = <fun>

-- 
Elias Gabriel Amaral da Silva <tolkiendili@gmail.com>


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Caml-list] what do I need to know to understand camlp4
  2010-09-24  0:15     ` Elias Gabriel Amaral da Silva
@ 2010-09-24  7:35       ` David House
  2010-09-27 11:43         ` Elias Gabriel Amaral da Silva
  0 siblings, 1 reply; 15+ messages in thread
From: David House @ 2010-09-24  7:35 UTC (permalink / raw)
  To: Elias Gabriel Amaral da Silva; +Cc: ben kuin, caml-list

On 24 September 2010 01:15, Elias Gabriel Amaral da Silva
<tolkiendili@gmail.com> wrote:
> [1] Pervasives should define it. In fact, even though ** is
> right-associative, it looks like any user-defined operator is
> left-associative by default. So it works like Haskell:
>
> # let ($) a b = a b;;
> val ( $ ) : ('a -> 'b) -> 'a -> 'b = <fun>
> # fun x y z -> x $ y $ z;;
> - : ('a -> 'b -> 'c) -> 'a -> 'b -> 'c = <fun>
> # let q = fun x y z -> x $ y $ z;;
> val q : ('a -> 'b -> 'c) -> 'a -> 'b -> 'c = <fun>
> # let q' = fun x y z -> (x $ y) $ z;;
> val q' : ('a -> 'b -> 'c) -> 'a -> 'b -> 'c = <fun>
> # let q'' = fun x y z -> x $ (y $ z);;
> val q'' : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'b = <fun>
> # let q''' = fun x y z -> x $ y z;;
> val q''' : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'b = <fun>

Incidentally, ($) in Haskell is right-associative; however the
consensus in the Haskell community (in my experience) is that this is
a mistake. If it were left-associative, you would lose the ability to
say f $ g $ x, but this can be written f . g $ x anyway (dot is
function composition (a -> b) -> (b -> c) -> a -> c, and does
right-associate), but many things would require fewer parentheses,
e.g. f (g x) (h y) can be written f $ g x $ h y.

In fact, the strict function application operator ($!) *is* left-associative.

See http://hackage.haskell.org/trac/haskell-prime/wiki/ChangeDollarAssociativity
for more information.

Also, you say "Pervasives should define it" -- the important thing
about dollar in Haskell is that it has very low precedence, hence its
ability to save parentheses. I didn't think OCaml allowed us to
specify the operator precedence of the infix operators we define.


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Caml-list] what do I need to know to understand camlp4
  2010-09-23 19:50   ` ben kuin
  2010-09-24  0:15     ` Elias Gabriel Amaral da Silva
@ 2010-09-24  7:48     ` David MENTRE
  1 sibling, 0 replies; 15+ messages in thread
From: David MENTRE @ 2010-09-24  7:48 UTC (permalink / raw)
  To: ben kuin; +Cc: caml-list

Hello,

2010/9/23 ben kuin <benkuin@gmail.com>:
> So why does the whole world tries to hammer some functional features
> into his imperative language? Why not maximize the imperative features
> of a functional language?

Because some algorithms or way to solve problems (think pattern
matching) are inherently better expressed using a functional approach
than an imperative one, and vice versa for others.

> For me it's worse, the syntax doesn't look quirky, but rather random
> too me. It's not like cpp where the syntax is utterly pragmatic,
> without any aesthetic claim. In OCaml it feels like someone
> deliberately neglected the syntax.

I would say: go beyond syntax ben! :-) This is not very important.

What is important are the concepts behind the syntax and the way to
use them to improve your programs (like phantom types to add static
checks without any runtime penalty to give just one example).

For me, OCaml is probably one of the best language if you need to
maintain a bug free program over a long period: type inference and
efficient garbage collector to program efficiently and safely at the
same time, compilation to native code to have good to very good
performance, a very active community and a lot of libraries, etc. I
don't like OCaml's syntax, but this is the way it is. :-)

And if you don't like it, just use another language that better fits
your feeling. But for me you'll make a mistake if you not try to grasp
the OCaml Way of Doing Things(tm). ;-)

Sincerely yours,
david


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Caml-list] what do I need to know to understand camlp4
  2010-09-24  7:35       ` David House
@ 2010-09-27 11:43         ` Elias Gabriel Amaral da Silva
  0 siblings, 0 replies; 15+ messages in thread
From: Elias Gabriel Amaral da Silva @ 2010-09-27 11:43 UTC (permalink / raw)
  To: David House; +Cc: ben kuin, caml-list

2010/9/24 David House <dmhouse@gmail.com>:

> Incidentally, ($) in Haskell is right-associative; however the
> consensus in the Haskell community (in my experience) is that this is
> a mistake. If it were left-associative, you would lose the ability to
> say f $ g $ x, but this can be written f . g $ x anyway (dot is
> function composition (a -> b) -> (b -> c) -> a -> c, and does
> right-associate), but many things would require fewer parentheses,
> e.g. f (g x) (h y) can be written f $ g x $ h y.
>
> In fact, the strict function application operator ($!) *is* left-associative.
>
> See http://hackage.haskell.org/trac/haskell-prime/wiki/ChangeDollarAssociativity
> for more information.

Oops. Still learning the basics of Haskell. Interesting, thanks :)

> Also, you say "Pervasives should define it" -- the important thing
> about dollar in Haskell is that it has very low precedence, hence its
> ability to save parentheses. I didn't think OCaml allowed us to
> specify the operator precedence of the infix operators we define.

Yes, the observation was made after seeing that $ would have lower
precedence than function application itself, but this does not say
anything about precedence in relation to other operators..

-- 
Elias Gabriel Amaral da Silva <tolkiendili@gmail.com>


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2010-09-27 11:43 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-09-23 14:56 what do I need to know to understand camlp4 ben kuin
2010-09-23 15:21 ` [Caml-list] " David MENTRE
2010-09-23 19:50   ` ben kuin
2010-09-24  0:15     ` Elias Gabriel Amaral da Silva
2010-09-24  7:35       ` David House
2010-09-27 11:43         ` Elias Gabriel Amaral da Silva
2010-09-24  7:48     ` David MENTRE
2010-09-23 15:25 ` bluestorm
2010-09-23 16:23   ` Jake Donham
2010-09-23 18:49     ` ben kuin
2010-09-23 18:54       ` Jake Donham
2010-09-23 19:06       ` Yoann Padioleau
2010-09-23 16:28 ` Michael Ekstrand
2010-09-23 16:35 ` Sylvain Le Gall
     [not found] ` <1285259219.1820.15.camel@knine>
2010-09-23 18:43   ` [Caml-list] " ben kuin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).