482 karma · joined July 11, 2008
Product Director at Akamai for 3 years, then switched to Engineering for past 14 years. Chief Architect in Architecture & Technology Strategy of Akamai's Cloud Technology Group.
Have you been to London? Paris? Zurich?
I'm trying to understand the basis for your absolutism and pessimism. In those cities, polite society definitely hasn't abandoned the public transit systems; at least not when I had been.
It's a nice detail for you to highlight, but surely that exists in the test spec specifically because the opcode spec doesn't mandate tail-call handling. If the latter did (a la Scheme), then the test spec would be updated to no longer have this note...?
The variety of ways that US States internally allow municipalities to have their own rules is actually quite interesting: https://en.wikipedia.org/wiki/Home_rule_in_the_United_States
(defpackage :test
(:use :cl :iterate))
(in-package :test)
(defun test-iter ()
(declare (optimize (debug 3) (safety 3) (speed 0)))
(iter:iter ;;; <-- highlights whole ITER form
(sleep 2)
(error "test")))
(defun test-loop ()
(declare (optimize (debug 3) (safety 3) (speed 0)))
(loop
:do (sleep 2)
:do (error "test"))) ;;; <-- highlights ERROR formWhere'd you see that? Ad Fontes Media has Guardian fairly high. Did you look at something else?
While you're at it, may as well create a backup of the $1 file.
[1] https://en.wikipedia.org/wiki/Convention_Relating_to_the_Sta... [2] https://en.wikipedia.org/wiki/Convention_on_the_Reduction_of...
e.g. if you have x and y in the environment as variables, and call your fexpr with (max x y) as the single argument called m: (myfexpr (max x y))
In haskell, m is not calculated (i.e. "max" is not run, nor x or y consulted) until "used". But the function doesn't "know" that it's max that's waiting to run, just that m is available if needed.
In a fexpr, you get something like a macro does, so you can see '(max x y) if you care to examine m, and you must call (eval m) to get the answer, but you could theoretically decide to do something else, like form a new expression if you walk m and make a decision based on the code itself (i.e. that it's a call to "max").
I believe that's true if you name a file as well (just tested it on Ubuntu). You keep following the original file you named, even if it becomes renamed; you don't follow a new file by the same name.
Using something like "watch -n5 tail filename" polls every few seconds to show the bottom of a file, and goes for the current file at that filename each time.
To compare, this is what a psuedo-popular-lang might look like:
let year = parse-integer(string, start=0, end=4)
let month = parse-integer(string, start=7, end=7)
let day = parse-integer(string, start=9, end=10)
return ((year * 31556926 + ;; no. of seconds in a year
month * 2629743 + ;; no. of seconds in a month
day * 86400) - ;; no. of seconds in a day
1900 * 31556926) ;; lisp timestamps start at 1900
Honestly that looks pretty run-of-the-mill to me.Having said that, rolling your own date logic is insanity, as the problem is difficult[1] yet solved[2].
[1] https://gist.github.com/timvisee/fcda9bbdff88d45cc9061606b4b... [2] https://common-lisp.net/project/local-time/manual.html