4 ms·
For 4 if i run from the command line (racket 5.93) i just get the contract violation message, which don't provide positional informations, it's not usefull when
by bad_login 12y ago
For 4 if i run from the command line (racket 5.93) i just get the contract violation message, which don't provide positional informations, it's not usefull when you have a list contract error with dozen of uses in a file.
For 3 i mean the words like 'visiting', 'instantiated', the phases, the syntax transformer there are many things to grasp. For instance i used to believe that phase 1 bindings where the functions executed by the expander instead of the one defined by define-syntax.
For complex macro i just expand it that's fine.
Other point the continuation is hard to grasp, i really understand when i see http://www.infoq.com/presentations/continuations-web-os http://www.infoq.com/presentations/continuations-web-os, the key point that help me is the fact he mentions continuation capture also the exit.
Another flaws i didn't mention is messages of typed/racket could be hard to understand especially one involving parametric function, this problem occur time to time in the mailing list. I know you take this kind of problems seriously.
A point why i like racket is because it's lexical scoped but also let me precise the portion i want more dynamism in with parameters or with eval + namespace.
Racket also miss some tooling the one come in mind is coding standard checker and formater, it could be done with free-identifier=? and have some rules. New macro could write their associated rule as metadata in a submodule. Is it doable, i mean technically not the fact to expect macro writer will write such rules?
- samth 12y agoThanks for the feedback. Certainly there are lots of complicated concepts to learn in the macro system. On 4, if I run this program: https://gist.github.com/8fbc12877e2639c5f94c https://gist.github.com/8fbc12877e2639c5f94c I get a backtrace like this: [samth@huor:~] r ~/tmp/x.rkt /: contract violation expected: number? given: '(1 2 3 400 500 600) argument position: 2nd other arguments...: 6 context...: /home/samth/tmp/x.rkt: [running body] There's no other stack frames because `average` is inlined, but if you have more complicated functions you should get more stack frames.