Lisp Scheme Part41 (855レス)
1-

532: はちみつ餃子 ◆8X2XSCHEME 2022/02/09(水)23:48 ID:9Cj+df9g(2/2) AAS
ところで scm を使うのはなにか理由があるの?
単なる好みならそれはそれでいいんだけど
このスレで言及される Scheme 処理系は Gauche, Racket, Chicken あたりが多いので
scm 使いは珍しいなーと思った。
533: 2022/02/10(木)00:36 ID:d8JzH9qO(1) AAS
guile使ってるけど#:で自己評価シンボルになるな
よく見かける:の方はデフォルトで有効じゃなくて、オプション切り替えだったり
534: はちみつ餃子 ◆8X2XSCHEME 2022/02/10(木)11:27 ID:zyc1CtL/(1) AAS
Guile のキーワードはシンボルとは別の型。
(symbol? #:foo) は #f を返す。
535: 2022/02/10(木)20:51 ID:/6XFwXXi(1) AAS
CLの掟とか知らないから名前付き引数はマクロでシコシコやってた思い出
536: 2022/03/22(火)22:52 ID:VhTpyHaP(1) AAS
外部リンク[html]:www.meti.go.jp
537: 2022/03/22(火)23:07 ID:jC3GI8nJ(1) AAS
Lispエイリアンww
538: 2022/03/23(水)05:57 ID:M5tI2TdZ(1) AAS
ほんまや
539
(1): _ 2022/04/03(日)20:41 ID:2/Br4qMY(1) AAS
LLVMベースの Common Lisp Clasp が1.0 になったよー
外部リンク:github.com
540: 2022/04/04(月)01:15 ID:H1vYw7XQ(1) AAS
キタ━━━━(゚∀゚)━━━━!!
541: 2022/04/04(月)15:23 ID:lL1T2q6e(1) AAS
>>539
新興?処理系もまだ増えてるのね
良きことだ
542: でーちゃんじゃないけど 2022/06/25(土)21:10 ID:AGenfzJY(1) AAS
github.com/Soldier-B/ns.js/blob/master/ns.js#L3
543: 2022/06/26(日)13:26 ID:DTfGvOZF(1) AAS
さとばん
544
(1): 2022/11/07(月)12:52 ID:D9DaYQB4(1/3) AAS
svigiはなんて読めばいいの
545: 2022/11/07(月)12:52 ID:D9DaYQB4(2/3) AAS
木曽路的な
546
(2): はちみつ餃子 ◆8X2XSCHEME 2022/11/07(月)13:59 ID:QQJOk/Pv(1) AAS
>>544
アイスランド語で括弧の意味だというのはあのキャラの作者が発表している公式な情報だから
Wikipedia でアイスランド語の表記から調べてみた。
外部リンク:ja.wikipedia.org
たぶんこの場合の g は英語でいうところの y みたいな発音。
あえてカタカナで表すと「スヴィーイィ」みたいな感じ。

アイスランド語の辞書サイトで音を聞いてみた感じでも外してないと思う。
外部リンク:islenskordabok.arnastofnun.is
547: 2022/11/07(月)16:54 ID:D9DaYQB4(3/3) AAS
>>546
ありがとう
音素と発音記号は手堅いね
548: 2022/11/07(月)20:41 ID:kjCGP1Rc(1) AAS
>>546
ここでアイスランド語が言及されるとは驚きました、アイスランド語は実に濃ゆい言語ですね
教科書(Johns Hopkins) を買ったけれども、当然 1 ワードも読めませんでした
549: 2022/12/12(月)12:44 ID:asaSA4nl(1) AAS
「命の輝き君」がマンホールの蓋に  轢死体と見分けがつかなくなってしまう [725951203]
2chスレ:news
550
(1): 2023/01/08(日)12:42 ID:hPHqQTwv(1) AAS
schemeはじめましたなんだけど
[lisp1.0+]label, [cl]labels = letrec + let name
[cl]flet ((f (args) fletbody)) body = let ((f (lambda (args) body)) letbody)
って理解でいいの?
551: はちみつ餃子 ◆8X2XSCHEME 2023/01/08(日)17:21 ID:/n9SAwLy(1) AAS
おおよそ似た雰囲気では書けたりするのかもしれないけど
単純に対応してるわけじゃなかったりもするからいいかどうかは状況によるんじゃないの。
552: 2023/01/08(日)18:49 ID:5ojqztS1(1) AAS
まんまじゃね?
とりあえず(macroexpand 'sb-int:named-let)はそのまんまlabelsに展開されたのでお試しあれ
どの処理系でも似たような定義が大体あるはず

1958年のオリジナルlispのlabelは、scheme界隈ではlet1という名前で見掛ける
当然だけど、ローカル定義が一つなので(自明には)相互再帰はできない

触って気付いたけど
(flet ((cons (a d) (list :cons a d))) (cons :a :d))
; (:CONS :A :D) clisp, sbcl
; (:A . :D) ecl

eclのこれバグ?
553
(2): 2023/01/09(月)03:51 ID:0CyucYY1(1/3) AAS
触ったことないのでeclがどの程度cltl/ANSI/clhs等の標準をリスペクトしてるのかも分からないのだが
とりあえずgoogle play storeからeclのandroidポートらしいeql5 replを入れてみた

(list ;; attempt to shadow cl:cons
(flet ((cons (x y) (cons y x)))
(cons 'co '?ns))
(let ((cons (lambda (x y) (cons y x))))
(funcall cons 'co 'ns)))

((CO . NS) (NS . CO))

fletは謎挙動だね…
* shadowしない名前(xcons)ならok
* (flet ((cons (x) (1+ x))) (cons 42))がアリティ不一致で怒られる
から推測するに、普通cl packageの関数なんて弄られないだろうと踏んで、関数の名前解決を手抜きして最適化してるんだろう

値の名前解決は特に弄る意義もないので、scheme風にlambdaをletで値として束縛して呼べば問題ない
clを名乗る以上はオプションで切れるくらいの配慮はあるだろうから、eclにこだわるならマニュアル読んでみては

少なくともclhsはリスペクトしてないね
...flet can locally shadow a global function name, ...
外部リンク[htm]:www.lispworks.com
554: 2023/01/09(月)16:15 ID:2yNmR2Eh(1) AA×

555: 2023/01/09(月)16:36 ID:0CyucYY1(2/3) AAS
eclは有名だけど、embeddableの名前通りの用途で1MBちょいな処理系だから、そういうものと割り切って使うべき

funcallが冗長ならletのbodyにfuncallをconsするだけのmy-fletを作ればいいじゃない
(さらなる災禍を招きそう)
556: 2023/01/09(月)16:57 ID:0CyucYY1(3/3) AAS
eclのlocked packageなる概念やcompile-timeの意味論に関連しそうなissue
2 yeas agoだけど
外部リンク:gitlab.com
557
(2): 2023/01/10(火)02:33 ID:/i8qCr3o(1/2) AAS
>>553
特定の名前の解決を決め打つ言語は多いし、そういうポリシーもありだと思う
普通でないのはcondition(warning)を挙げないところ

決め打つ名前(locked package?)が分かってる限りは、flet/labelsのレキシカル束縛リストから拾った名前がbody内の呼び出しformのcarに存在するか、ランタイムコストの無い自明な静的解析でconditionを挙げられるはず
558: 2023/01/10(火)03:18 ID:/i8qCr3o(2/2) AAS
>>550
等価と思って良いよ
伝統的なlisp(とcl)のように(let ((x '())) ...)を(let (x) ...)と略記できない、だとか細かい差異はあるけど

百聞は一見にしかずなので、構文の対応を見るのが手っ取り早い
あとeclのname collisionの件、consの例(>>553)はさすがにcontrived-exampleだと思うので、ついでにeclで破綻するように

letrec/nlet/labels で定義するラベルとして、所謂accumulatorイディオムにloop(他にはlp, iterとか)を使うのが慣例だけど、eclではcl:loopと読まれるのでは?と予想

;;; cl -- ok: cmucl, sbcl, clisp, gcl err:ecl (的中)
(defun fact (n)
(labels ((loop (k acc)
(if (= k 0)
acc
(loop (1- k) (* k acc)))))
(loop n 1)))

;;; scheme -- ok: guile
(define (fact n)
(letrec ((loop (lambda (k acc)
(if (= k 0)
acc
(loop (1- k) (* k acc))))))
(loop n 1)))

pcでテストはしたけど、スマホから手打ちなので変だったらごめん
559: はちみつ餃子 ◆8X2XSCHEME 2023/01/10(火)13:31 ID:TxpPtfKm(1) AAS
>>557
スクリプト言語 (処理系) 的な想定だと実行開始時にテキストの解釈から毎回やるので
静的解析もランタイムの一部みたいな感じになる。
この場合に限って言えばどちらにせよ名前のルックアップはやるのだからそのときにわかるだろうとは思うけど
静的解析を頑張らないという方針はあり得るんじゃないの。
560
(2): はちみつ餃子 ◆8X2XSCHEME 2023/01/11(水)00:38 ID:s0T2WgwN(1/2) AAS
Gauche で検出されないエラーで (let ((0 1)) 0) みたいなのがあって、
実際にはオプティマイザが消去してしまうんだそうな。

文法の解析で通したものをオプティマイザがエラーとして弾くのも変な話だし、
オプティマイザが走査することがわかっているものを前段階でもチェックするのは二度手間だし、
オプティマイザを密結合してしまうのも保守しづらいし……
という葛藤があるのはわかる。

まあそれぞれに事情があるので原理的に可能だからといってそうすべきだとも言えない気がする。
561: 2023/01/11(水)00:49 ID:LBEzL6fs(1) AAS
0はシンボルじゃないから、文法解析を通しちゃ駄目だろw
1-
あと 294 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.028s