I just read myself, I meant runtime errors, not compile-time errors. One big 
complain I hear from people used to compiled languages - when they first use 
dynamic and interpreter languages - is the idea of having errors occur at 
runtime, which ‘should’ have been picked up by the interpreter before runtime.

  I understand there’s a major trade off here, and there are things that are 
possible to do with interpreters that aren’t with compilers, and vice versa. 
What I was referring to, is a way to analyse further the source, to identify 
potential errors before they happen at runtime. I thought that’s what contracts 
and typing in general was supposed to catch, and I have yet to experiment with 
contracts in my code, in production. However I have encountered this problem 
many times :

(get-text-from-user ...) returns a string of #f.

  If I use the output of this function, I always run the risk of having the 
user click cancel, and get a contract error returned by the next function. So I 
always have to have something like

(unless result (exit 0))
...or something more involved to deal with the possibility of getting #f like:

(if result (do-something-with result)
   (display-error-and-do-something-else))

  Somehow I’ve always been surprised by the behaviour, and I wish there was a 
solution to this, apart from literally filling my code with checks (which is 
what I do now). If only there was a way to trace the possible output of 
functions against the permitted input of the next function in the chain 
(through continuation marks?), then maybe we could solve a piece of that 
runtime errors puzzle.

Dex

> On Apr 29, 2020, at 11:24 PM, Dexter Lagan <dexterla...@gmail.com> wrote:
> 
>   You’ve always been very inspiring to me. I’ll do my best to better the 
> docs if there’s a guide on how to do so. Bear with me, I have no background 
> in computer science and I don’t even know what a pull request is. I only 
> recently started using version control. I’ve always worked alone, until 
> recently - now I have to lead a team, and I can not longer escape the hard 
> stuff.
> 
>  I have a million questions, about Racket’s direction and symbolic 
> computation in general. I’ve been reading day and night on everything I 
> should have learned in comp-sci. 
> 
>  My dream is to find a solution to compile-time errors (through some kind of 
> analysis, maybe contracts already solve this?), and find a way to teach kids 
> how to program. Thanks for telling me about bootstrapworld. I’ll check it out.
> 
> Dex
> 
>>> On Apr 29, 2020, at 2:21 PM, Matthew Flatt <mfl...@cs.utah.edu> wrote:
>>> 
>>> At Wed, 29 Apr 2020 11:14:47 +0200, Dexter Lagan wrote:
>>> To the point: what would make Racket2 the ultimate tool (for me):
>>> Performance. Faster startup times, shorter execution times in general. 
>>> Optionally, a ‘lite’ version of Racket that compiles directly to no-deps 
>>> binaries, bypassing the JIT altogether, would be a game-changer. As far as 
>>> high levels languages with functional concepts and metaprogramming 
>>> facilities 
>>> that compiles to tiny, fast bins, Nim comes dangerously close, but it’s not 
>>> a 
>>> Lisp, and it’s not Racket.
>>> Production-quality, modern and fast GUI facilities. I’ll take properly 
>>> documented, complete Qt bindings. Racket/GUI is great for internal tools, 
>>> but 
>>> it quickly becomes slow, tedious and limited for more complex client-facing 
>>> UIs.
>>> One complete, commercial-grade Web framework, inspired from Symphony or 
>>> Laravel. Security and ease of use first, continuations later.
>>> Better documentation: Racket docs are aesthetically very pleasing, complete 
>>> and detailed. However some parts are still very obscure and lacking simple 
>>> examples (if only the part about Continuations included just one basic 
>>> example, such as a ‘return’ implementation, on the very first page. If only 
>>> the Macros documentation started with define-simple-macro and a few very 
>>> basic, practical examples. Instead we’re greeted with pattern-based macros, 
>>> which although very powerful, are very hard to comprehend for newcomers).
>> 
>> Which of these things will you be working on?
>> 
>> 
>>> I am well aware that what I’m wishing for isn’t necessarily compatible with 
>>> Racket’s intended public’s needs (comp-sci teachers and students? That’s 
>>> the 
>>> impression I’m getting). But Racket is the most advanced general purpose 
>>> programming tool I’ve ever seen. Wouldn’t it be a shame if it was limited 
>>> to 
>>> academic use?
>> 
>> https://www.youtube.com/watch?v=LN0qG-i1iT0&feature=youtu.be
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Racket Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to racket-users+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/racket-users/5ea97134.1c69fb81.8c167.2c68SMTPIN_ADDED_MISSING%40gmr-mx.google.com.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/F2B08427-67B6-45DC-BFCA-AFB44F75B10B%40gmail.com.

Reply via email to