[過去ログ] Lisp Scheme Part40 [転載禁止]©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(2): デフォルトの名無しさん [sage] 2015/03/16(月) 13:45:52 ID:EEYZoZ1i(1) AAS
Common Lisp、SchemeをはじめとするLisp族全般のスレです
■前スレ
Lisp Scheme Part39
2chスレ:tech
■テンプレ
外部リンク:wiki.fdiary.net
■関連スレ
【入門】Common Lisp その11【質問よろず】
2chスレ:tech
【Scheme】Schemeインタプリタ Mosh Part1【Lisp】
2chスレ:tech
【Lisp】プログラミング言語 Clojure #3【JVM】
2chスレ:tech
【魔法】リリカル☆Lisp【言語】
2chスレ:tech
978: デフォルトの名無しさん [] 2018/07/11(水) 21:46:27 ID:zGhUAGhR(1) AAS
リテラルのリストに対する破壊的変更はダメ
っていうのはLand of Lisp(の訳注)で初めて知った
他の本やサイトでこれに関する注意を見た覚えがない
「literal object の変更にあたるから未定義動作になる」(>>969969(3): デフォルトの名無しさん [] 2018/07/11(水) 15:25:01 ID:16Hc9NDk(1/3) AAS
>>966
let の使い方というより、 quote されたリストの破壊的変更は literal object の変更にあたるから未定義動作になるはずで、そのせいで変な挙動になってるんだと思う。
ちなみに Allegro だと LispWorks と同じ挙動になった。
SBCL だと警告で "Destructive function SB-KERNEL:%RPLACA called on constant data: (0 0 0)." と出る。
で、繰り返し呼んでも毎回 (0 0 0 0 0 0) が返されるみたい。
)ということは、リストに限らないんだね
[1]> (defun f () (let ((x "abc")) (format t "~S~%" x) (setf (elt x 0) #\!) x))
F
[2]> (f)
"abc"
"!bc"
[3]> (f)
"!bc"
"!bc"
[4]>
979: デフォルトの名無しさん [sage] 2018/07/11(水) 22:50:38 ID:nrnWofQI(1) AAS
CLHSで "The consequences are undefined if literal objects are destructively modified." って書いてあるページ
外部リンク[htm]:www.lispworks.com
そして、 literal の方には "appearing as data in a quote form" なんて書いてあるので (外部リンク[htm]:www.lispworks.com
quote の中身は literal, よって破壊的に変更すると undefined ..?
980(1): デフォルトの名無しさん [sage] 2018/07/11(水) 22:59:01 ID:vOu8ozZx(1) AAS
何故maxには:keyがつかえないの?
定義だから。いや、知ってるけどあってもええやん。
みんなreduceとか使ってやってんの?
981: はちみつ餃子 ◆8X2XSCHEME [sage] 2018/07/11(水) 23:38:32 ID:RBgflsxh(1) AAS
リテラルの破壊が駄目ってのは割と一般的な気がする。
C がそうなってるのを知ってたので、
後に他の言語を学ぶときも意識して仕様をチェックしてる。
982: デフォルトの名無しさん [sage] 2018/07/12(木) 00:32:56 ID:bsVrPe++(1/2) AAS
>>977977(2): 966 [sage] 2018/07/11(水) 21:11:34 ID:7FwajRbN(7/7) AAS
自分の環境でSBCLでやってみたら↓みたいになった。
個人的にはLispworksの挙動より意味不明かも。
(hoge-is-foo)はLispworksと同じ結果。
* (test)
0 0 0 0 0 0 0
(0 0 0 0 7 0 6)
* (test)
0 0 0 0 7 0 6
(0 0 0 0 7 0 6)
* (test)
0 0 0 0 7 0 6
(0 0 0 0 7 0 6)
SBCLは警告出すということは危険なコードと言うのを認識してコピーを作成してるんでしょ
ちなみにEmacsだとクオートされたリストの書き換えは問題ないからついやってしまうな
983: デフォルトの名無しさん [sage] 2018/07/12(木) 00:35:03 ID:bsVrPe++(2/2) AAS
>>977
すまん間違えた
普通にリテラル内が書き換えられてるって事か
984: デフォルトの名無しさん [] 2018/07/12(木) 12:25:48 ID:l643qOMO(1) AAS
>>973なるほど、first側にatomかpairかのフラグを入れて、実際のリストの構造はsecond側に入れればいいのか。
ありがとう、この線でやってみる。
985(1): デフォルトの名無しさん [sage] 2018/07/12(木) 13:13:34 ID:QKPLqpS1(1) AAS
mapcarしてremove-if #'nullするのと、
mapcan使うのとどっちがおすすめなん。
986: デフォルトの名無しさん [sage] 2018/07/12(木) 17:19:27 ID:eSxWwMsY(1/2) AAS
>>985
filter 的な話?こういう
(mapcan #'(lambda (x) (and (numberp x) (list x)))
'(a 1 b c 3 4 d 5))
=> (1 3 4 5)
上の例は CLHS からの引用だけど (外部リンク:www.lispworks.com
そこで 「mapcan を使った idiom」とか言ってるから、 mapcan でいいんじゃないの。
987: デフォルトの名無しさん [sage] 2018/07/12(木) 18:20:07 ID:eSxWwMsY(2/2) AAS
>>980
:key を持つのは sequence か cons を扱う関数/マクロだけみたい。
max は数を扱う関数だから :key がない、くらいの理由なのではと予想。
で、僕だったらそういう状況は loop ~ maximize で書いちゃうな:
(loop with list = '((1 a) (100 b) (5 c))
for i in list
maximize (car i))
988: デフォルトの名無しさん [sage] 2018/07/12(木) 19:34:18 ID:D5ReHf3v(1) AAS
1の関連スレっているの?
どこもレス皆無なんだけど。
ここらへんは辛うじて今年レスがある。
【Lisp】プログラミング言語 Clojure #4【JVM】 [無断転載禁止]©2ch.net
2chスレ:tech
【GNU】Emacs Lisp 【Elisp】
2chスレ:tech
989(1): はちみつ餃子 ◆8X2XSCHEME [sage] 2018/07/12(木) 20:31:21 ID:m8Dd1031(1) AAS
Lisp系だからってひとまとめにするには違いが大きすぎるし、
ちょっとしたことならともかく、
入り組んだ事柄を話すにはやっぱり専門のスレがよさそうな気もするし、
それぞれの言語でコミュニティがあるから、
5ch は雑談程度って割り切ってもいいのかもしれないとも思うし…。
990(1): デフォルトの名無しさん [] 2018/07/13(金) 23:56:41 ID:1D4AU09B(1) AAS
Maxima以外に実用出来るオープンソースの数式処理システムを知らないのだけど
Common Lispが優秀過ぎるからmaximaしかないのか
自分の知らない数式処理システムが他にあるのか
991: はちみつ餃子 ◆8X2XSCHEME [sage] 2018/07/14(土) 01:56:22 ID:Eblv1Llg(1) AAS
>>990
俺が知ってるのだとこういうのもある。
外部リンク[html]:www.math.kobe-u.ac.jp
外部リンク:www.gap-system.org
貢献する人が多いと良くなっていくのは当然だし、
良くなるとまた人が集まってくるというスパイラルが出来るので、
一度人気が出るとあえて他の不人気のプロジェクトに手を出そうという人は
現れにくいんじゃない?
まあ、数式処理と一言で言っても数学の分野は広大だから、
今までコンピュータで扱えなかった分野のためのソフトが新たに出てくることだってあるだろうし、
ちょっと別の分野用の数式処理ソフトを探したら案外たくさんあるかもしれないぞ。
992(1): デフォルトの名無しさん [sage] 2018/07/14(土) 07:02:57 ID:0vuXs+dx(1) AAS
>>989
ええ……
Lispでスレ分割なんかしたら
過疎って仕様がないぞ
現に今過疎ってるのにもっと過疎る
993: デフォルトの名無しさん [sage] 2018/07/14(土) 09:15:24 ID:/GhuOfpQ(1) AAS
んじゃ関連サイトは過去スレを除きとりあえず残すけどええんか?
994: デフォルトの名無しさん [sage] 2018/07/14(土) 13:24:35 ID:rTAZMq1D(1) AAS
Emacs Lispは毛色が違う気がする
995: はちみつ餃子 ◆8X2XSCHEME [sage] 2018/07/15(日) 00:24:40 ID:HERu1+Fl(1) AAS
>>992
分割しようってのじゃなくて、現時点でそれぞれにスレ立ってるやつがあるわけよ。
個別にスレ立ててるやつは、
ここでやるのはちょっと違うなと思ったからこそ立ってるわけでしょ?
統合するとなると違和感は有るよなっていう程度の話。
996(1): デフォルトの名無しさん [sage] 2018/07/15(日) 02:10:24 ID:oGr67yTf(1) AAS
このスレ以外ほぼ更新ないけど関連スレは残したよ。
3年以内に消費したいね。
Lisp Scheme Part41
2chスレ:tech
997: デフォルトの名無しさん [sage] 2018/07/15(日) 13:59:55 ID:QJDLEpU3(1/2) AAS
画像リンク
998: デフォルトの名無しさん [sage] 2018/07/15(日) 14:01:38 ID:QJDLEpU3(2/2) AAS
ぬるぽ
999: デフォルトの名無しさん [sage] 2018/07/15(日) 15:09:22 ID:jvo4M5NJ(1/2) AAS
>>996
乙
1000: デフォルトの名無しさん [sage] 2018/07/15(日) 15:09:38 ID:jvo4M5NJ(2/2) AAS
1000
1001(1): 1001 [] ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1217日 1時間 23分 46秒
1002(1): 1002 [] ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
外部リンク:premium.5ch.net
▼ 浪人ログインはこちら ▼
外部リンク[php]:login.5ch.net
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.236s*