Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 135
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 135
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 187
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 188
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 189
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 194
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 195
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 196
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 197
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 241
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 264
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 269
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 275
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 285
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 286
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 296
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 297
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 298
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 308
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 309
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 310
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 311
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 321
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 322
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 323
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 324
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 325
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 497
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 527
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 540
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 587
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 626
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 668
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 668
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 670
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 673
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 682
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 688
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 693
Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php on line 699
Deprecated: Function get_magic_quotes_gpc() is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.http.php on line 410
Deprecated: Function get_magic_quotes_gpc() is deprecated in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.http.php on line 410
Warning: Cannot modify header information - headers already sent by (output started at /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php:309) in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.http.php on line 272
Warning: Cannot modify header information - headers already sent by (output started at /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php:309) in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.http.php on line 274
Warning: Cannot modify header information - headers already sent by (output started at /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php:309) in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.http.php on line 274
Warning: Cannot modify header information - headers already sent by (output started at /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php:309) in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.http.php on line 274
Warning: Cannot modify header information - headers already sent by (output started at /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php:309) in /home/didierve/didierverna.net/blog/inc/public/lib.urlhandlers.php on line 110
Warning: Cannot modify header information - headers already sent by (output started at /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php:309) in /home/didierve/didierverna.net/blog/inc/public/lib.urlhandlers.php on line 130
Warning: Cannot modify header information - headers already sent by (output started at /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.json.php:309) in /home/didierve/didierverna.net/blog/inc/libs/clearbricks/common/lib.http.php on line 295 Didier Verna's Scientific Blog - Tag - Optional Types - CommentsDidier Verna's scientific blog: Lisp, Emacs, LaTeX and random stuff.2023-11-17T03:31:16+00:00Didier Vernaurn:md5:a22c53786aff986a2da4c770c233a8f9DotclearThe Return of Segfaults - markcoxurn:md5:67f641ec65f442cf39670f9c41520eb02015-08-15T03:23:55+02:002015-08-15T02:23:55+02:00markcox<p>The door to no safety has always been open with Common Lisp. See CLHS 1.4.4.3. An implementation is not required to detect invalid types at run time unless the operator is specified to do so. A great example is (aref v -1).</p>The Return of Segfaults - Didierurn:md5:6f6d756053579c1f6fc5d53354962dfc2015-08-06T15:59:00+02:002015-08-06T14:59:00+02:00Didier<p>My 2 cents, the future is in the ability to mix dynamic types and strong+explicit+static ones. The whole area of research around "gradual typing" is going in that direction.</p>
<p>More generally, I've always believed that general purpose programming languages should always strive for being as multi-paradigm as possible, which in fact they do even against their original goals or designers, because real life is just like that. In history, I can see 3 major areas of paradigm mutual exclusion: imperative/procedural vs. functional, dynamic vs. static types and explicit vs. automatic memory management.</p>
<p>The first war is over: everybody now understands the importance of the functional paradigm (e.g. both C++ and Java have lambdas).</p>
<p>The second war is almost over: more and more languages are attempting to mix static and dynamic types (e.g. Racket but also F# etc.).</p>
<p>So I predict (ahem) that one of the next big challenges for future programming languages will be to provide the ability to mix garbage collection and explicit memory management.</p>The Return of Segfaults - hydanurn:md5:5b07267a5541aae361392c73ac758c182015-08-06T14:07:40+02:002015-08-06T14:45:32+02:00hydan<p>> Yes, Common Lisp's weak, optional type system is an antiquated thing.</p>
<p>What would be an improvement over it? is that what Racket is doing? I am really curious if there is any research happening on this.</p>The Return of Segfaults - Dmitri Hrapofurn:md5:2803116969e81d6a12f96c192a9ac18f2015-08-05T20:18:12+02:002015-08-05T19:18:12+02:00Dmitri Hrapof<p>In speed-critical functions: (declaim (optimize (speed 3) (safety 0) (debug 0)) in production, (declaim (optimize (speed 0) (safety 0) (debug 3)) otherwise...</p>The Return of Segfaults - mmontoneurn:md5:1c239348d4355bb333c352f05e3a018b2015-08-05T19:43:20+02:002015-08-05T18:49:14+02:00mmontone<p>Another supposedly dangerous thing are non-hygienic macros. But again, in practice, I have never had a symbol-name clash. Just use gensym and you are done.</p>The Return of Segfaults - Didierurn:md5:c0d12ed9ba6c371ceea3a66ba1e7c3162015-08-05T19:05:12+02:002015-08-05T18:05:12+02:00Didier<p>Thanks for your comments, BTW, I'm rephrasing the ambiguous parts.</p>The Return of Segfaults - Didierurn:md5:977809fe61757569a6c69ab6b6e0e0a42015-08-05T18:59:59+02:002015-08-05T17:59:59+02:00Didier<p>Granted, (safety 0) globally is abusive. I was really talking about the actual risk of breaking type safety with optimization in production code.</p>
<p>As for scoping, you're right, but I was not talking about the expressiveness of the paradigms here, only the dangers, and I think the biggest danger with dynamic scoping is name clashes.</p>The Return of Segfaults - luisurn:md5:43a80405a1642ddaa8b75ae1703fa3212015-08-05T18:23:21+02:002015-08-05T17:23:21+02:00luis<p>Safety 0 in production, globally? No! Why? :-) Even in specific functions, it's probably a bad idea. There are always bugs and flawed assumptions... I've seen some very strange results happening due to declaims like that, notably treating NIL as though it were some random structure and trying grab a value at some offset.</p>
<p>Lexical vs dynamic scoping is not just about name clashes, it's about closures, isn't it? Closures are what I miss when I only have dynamic scoping. (Thankfully Emacs has had lexical scoping for a while now. ;-))</p>