Přijde mi, že psát o typech v CL a zmiňovat obligátní čísla, symboly a consy a nezmínit ostatní - sekvence/pole, objekty, hash tabulky, streamy a pod - jen utvrzuje dojem, že CL je něco teoretického z pravěku.
I ty dál popisované lambda funkce (a obecněji closures - "let over lambda") jsou koneckonců ne zkratka zápisu, ale univerzální typ, který může být v proměnné nebo který funkce může vracet.
No to je různé pro různé platformy. Ony se ty bity pro tagy a masky řeší až v době překladu pro danou architekturu. A například na x86-64 je (zdá se) rezervován jiný počet bitů, než na 32bitové x86 - ale popravdě je to trošku divočina, ještě to musím prozkoumat (třeba takový PicoLisp to má řešeno přímo ve specifikaci)
Po kratkom googleni to v pripade SBCL bude este trochu komplikovanejsie to rozlisovanie, v pripade fixnum je tam len 1 bit ale lowtag je az 4 bity:
sb-vm:n-fixnum-bits
63
sb-vm:n-fixnum-tag-bits
1
sb-vm:n-lowtag-bits
4
Aj podla CLHS specifikacie je to implementacne zavisle.
(describe (* -1 (expt 2 62)))
-4611686018427387904
[fixnum]
(describe (* 1 (- (expt 2 62) 1)))
4611686018427387903
[fixnum]
28. 4. 2022, 13:19 editováno autorem komentáře
No je to myšleno tak, že žraloci jsou prastará třída, pocházející snad někde z prvohor. Ale jsou tak dokonale přizpůsobeni prostředí - tedy jinými slovy dosáhli dokonalosti, že prostě přežili a pravděpodoně se mají docela dobře (to ale nedokážu posoudit).
28. 4. 2022, 15:36 editováno autorem komentáře
Taková zlá slovíčka :-) spíš se provalilo že lisp je obšlehnutej od emzáků https://www.lisperati.com/lisplogo_fancy_256.png
“s velkou pravděpodobností se jednalo o první využití garbage collectoru v široce používaném obecném programovacím jazyce”
To je asi pravda, trochu jsem se v tom vrtal a McCarthy byl zřejmě první. Akorát mu zakázali říkat tomu “garbage collection”, v jeho článku to byl “reclamation process”. Údajně se na úklid čekalo několik sekund. Co mi to jen připomíná… :)
Tak podle The Evolution of Lisp to i později (MIT Lisp Machines) uživatelé raději vypnuli, a jednou za pár dní restartovali:
... even when the garbage collector appeared, users preferred to disable it. Most of the programming tools (notably the compiler and program text editor) were designed to avoid consing and to explicitly reclaim temporary data structures whenever possible; given this, the Lisp Machine address spaces were large enough, and the virtual memory system good enough, that a user could run for several days or even a few weeks before having to save out the running “world” to disk and restart it. Such copying back and forth to disk was equivalent to a slow, manually triggered copying garbage collector.
Lisp se vrací do módy, všichni na kurs “Unlearning OOP”: https://prog21.dadgum.com/210.html?utm_campaign=April%202022%20Emails&utm_medium=email&_hsmi=211461848&_hsenc=p2ANqtz-88ypecNv8m9un7H0_R9v_oy56W_3xIBWNMZj-m1fqxBCGmyxSWKkIMu634pbJUmfb2RlWhtwrh8MI5JuAIATFbbI4p3A&utm_content=211447234&utm_source=hs_email :)