【入門】Common Lisp その11【質問よろず】
■ このスレッドは過去ログ倉庫に格納されています
Lisp Schemeスレでは恥ずかしくて聞けないようなことを質問したり、 Lisp Schemeスレの話題は高度すぎて気後れする人が話しあったり。 それ以外でもCommon Lispについての話題なら歓迎します。 ま、ゆっくりやりましょう。 「いいものの本質は、いかなる時代においても変わらない」byパワーズ ■前スレ 【入門】Common Lisp その10【質問よろず】 http://peace.2ch.net/test/read.cgi/tech/1361341876/ ■Wiki http://wiki.fdiary.net/lisp/ (id:guest pass:cl) http://cl.cddddr.org/ http://tips.lisp-users.org/common-lisp/ >>576 今どきもう処理速度より 人間が読み書きする速度の方が重要だろ? でそれはPythonの方が早そうな気がするけど >>583 >>587 Emacsってフリーソフトの草分けじゃん? エディタだけどIDEに近いんじゃないの? 欲しい機能はLispで自力実装するになるけど >>603 個人的にはOOPやろうとすると A.bにならないことが気になるわ >>632 SmalltalkはあのIDEを使うために 言語も学ぶみたいな感じだからな >>647 > ライブラリやドキュメントの充実の方が生産性上げる気がしてる ドンキ行けばなんでも売ってるから買えば済むけどそれは生産性高いのか ドキュメントの充実とかいうのも所詮Qiitaにコピペできる手順が書いてあるかどうかだろ > 問題はメタプロの生産性が本当にメチャクチャ高いかどうか? 最近のわかりやすい事例でいうとライブラリやドキュメントが充実してないような量子コンピューティングでlisp使われてるわな d-waveやrigetti ゼロスタートでの生産性高いから採用されてんじゃないの 昔からlispはそういうところで使われてきたんだよな (list 1 2 3) = '( 1 2 3) ? >>653 >ドンキ行けばなんでも売ってるから >買えば済むけどそれは生産性高いのか どうでもいいけど PHPってドンキみたいな雰囲気だよな 実践common lispの古本買ったのですが LispBox落としてきて本に載ってるEmacs?Slime?わかんないけどショートカットキー試したら ほとんど通らなくて絶望してる 前の持ち主はそこまででこの本捨てたみたい (ここまではラインマーカーあり、手あと付きまくりで汚れてる 水滴の落ちた跡があるけど、泣いたのかもしれない) なるほど C言語の本でもポインタの説明が間違ってて詰むパターンか かわいそうに K&R本も難読で苦労した人も多かろう ポインタの話を出して「それに比べたらお前の絶望なんて大したこと無い」ってか Cはドメジャー言語、Lispはマイナー言語だぞ 実践common lispってそんなHow To本だったっけ?pathnameのはなしをよんでうげっとなったような記憶が。 >>661 lisp はマイナーなんかじゃなく、神話ですよ 読者も書籍も少ないという意味では同じ意味だろアスペ野郎 lisp初心者とプログラミング初心者のどっちなんだってやつ多いよな pythonおすすめ 冒頭Emacsの使い方から書いてある、環境も提供してる hello worldから書いてある プログラミング初心者が手を出しても全くおかしくない本だと思うけどね LispBoxですが カッコ全閉じ C-c C-q → undefined 関数コンパイル C-c C-c → [Condition of type SIMPLE-ERROR] →戻るとリターンで評価が効かなくなってる 関数コンパイル M-x slime-compile-defun → 通る どうすれば? >>666 全くの初心者でも無いです 大学ではEmacsでレポートを書いていたし、Schemeの本も読みました 再帰は多少慣れています >>667 C-c C-c で slime-compile-defun は lisp-mode での割り当てです。 *slime-repl* バッファでは slime-interrupt が C-c C-c に割り当てられています。 C-c C-q は大分前になくなったようです。 今はカッコ全閉じは C-c C-] これも lisp-mode での割り当てで、*slime-repl* バッファでは使えません。 もちろん設定すれば別ですが: ;; SLIMEのREPLバッファでも C-c C-] でカッコ全閉じ (eval-after-load "slime-repl" `(define-key slime-repl-mode-map (kbd "C-c C-]") #'slime-close-all-parens-in-sexp)) なおREPLでは Ctrl+Enter で「カッコ全閉じして評価」ができます: CL-USER> (list(list(list ;ここで Ctrl+Enter すると ↓ CL-USER> (list(list(list))) ((NIL)) CL-USER> >>669 ありがとうございます! LispBoxが古いせいなのか、C-c C-cが未定義なんですよね C-c C-]も未定義と叱られます >>670 は通って全閉じしてエンターしてくれます Emacs 23.2.1です ここから貰ってきたものです https://common-lisp.net/project/lispbox/ Lisp Cabinetも入れててこっちはslime2009-10-15でちょっと古いのか *slime-repl sbcl*でC-c C-]が未定義と言われます >>672 >>669 の言う通り、 *slime-repl sbcl* では C-c C-] は定義されておらず、使いたければ 669 と同じ手当てがいる。 SLIME 2.24 (May 2019) でも slime-repl には C-c C-] は定義されていないみたい。 .lisp ファイルを開いた時の slime-mode には定義されてるけど。 >>669 の「設定」はいったん忘れてください。 lispboxはemacsのユーザー設定を読込むようになっていないので意味のない提案でした。 とにかく、拡張子が .lisp のファイルを作ってそこで試してみて。 そこでなら C-c C-] も C-c C-c も使えるはずです。 閉じ括弧は自動入力に頼るべきだし、実際閉じ括弧を入力する事は皆無だ 実践common lispは序章に common lisp に興味があるすべての人に向けたもの とは書いてあるがプログラミング初心者にも向くとは書いてない python,java 他の言語と比較した解説が多い ターゲットは lisp に興味のあるプログラマだろ だからって前提としてる環境で通らない事を書いてたら読者可哀相ではある 実践は少なくとも10年前は本の通りそのまま動いたよ 前提としてる環境は2005年の環境な 翻訳は2008年らしいがとっくに絶版らしい lispboxの代替品はいまならportacleだろうな https://portacle.github.io サバイバルなんとかって同人誌には導入の方法とか書いてないの? HDD買ってきてlinux入れるしかないかなぁ どうせならlibreboot化してみっかなCL関係ないけど 嘘書くなよ‥ ホビー向けlispworksは 64ビット版 750$ 32ビット版 500$ http://www.lispworks.com/buy/prices-1h.html 思う所あって、とりあえず入門しようう・・・と ttp://www.nct9.ne.jp/m_hiroi/clisp/index.html ここ見ながらSBCLをWindowsに入れて始めました。 ・・・うん、流石に数日で制覇は無理だし、当分はリファレンス見ながらじゃないと文法は頭に入らないかな。 ただもっと疑問なのは・・・私はインタプリタがBASIC以来で30年ばかりブランクあるのだけど、LISTやNEWやRENUMみたいなインタプリタへの命令ってどうなってるんでしょ。 定義した関数は実行できるけどコードはもう見れないなんてコトないよね。変数は確認できるけど。 ググって他の入門テキスト当たっても特に記述がないってのはどういうコトなんだ・・・かろうじてLOADがあった程度とか。 見落としてるのかな。 以下のエラー、対処法わかりますか? $ ros install cxxxr/lem すると、 Installing from github cxxxr/lem To load "lem": Load 1 ASDF system: lem ; Loading "lem" ....................[1/3] System 'lem' found. Loading the system.. ; ; caught ERROR: ; READ error during COMPILE-FILE: ; ; The symbol "LOAD-ASD" is not external in the ASDF/INTERFACE package. ; ; Line: 62, Column: 20, File-Position: 2356 ; ; Stream: #<SB-INT:FORM-TRACKING-STREAM などとなり、インストールできません. 分かる人いますでしょうか。 MacOS Catalina 10.15.6 The symbol "LOAD-ASD" is not external in the ASDF/INTERFACE package. asdf よりも、日本人が作った、anyenv を使えないの? 漏れは、Windows 10, WSL, Ubuntu 18.04 で、 ruby 2.6.6, node 12.16.2 を入れた anyenv は多言語向きで、rbenv, nodenv, pyenv, phpenv などを同じ使い方で、統一的に扱える anyenvと比較されるのはroswellだと思うが >>691 ありがとうございます。 次の段階に移りました。 下のように UIOP/OS:~ ばかりがillegal function callとなります。 どうしたら良いでしょうか? Making core for Roswell... building dump:/Users/user/.roswell/impls/x86-64/darwin/sbcl-bin/1.2.11/dump/lem-ncurses.core ; file: /Users/user/.roswell/lisp/quicklisp/dists/quicklisp/software/cffi_0.23.0/toolchain/bundle.lisp ; in: DEFUN BUNDLE-PATHNAME-TYPE ; ((UIOP/OS:OS-UNIX-P) "o") ; ; caught ERROR: ; illegal function call ; ((UIOP/OS:OS-WINDOWS-P) ; (IF (UIOP/OS:FEATUREP '(:OR :MINGW32 :MINGW64)) ; "o" ; "obj")) ; ; caught ERROR: ; illegal function call ; ((UIOP/OS:OS-UNIX-P) "a") ; ; caught ERROR: ; illegal function call anyenv install --list と入力すると、Lisp には対応してなさそう。すまんかった Renv, crenv, denv, erlenv, exenv goenv, hsenv, jenv, luaenv, nodenv phpenv, plenv, pyenv, rbenv, sbtenv scalaenv, swiftenv, tfenv lemはしょっちゅう壊れるから開発に参加できるくらいのスキルないと常用はむり エディタの拡張書いてもAPIの変更ですぐ動かなくなるからエディタ好き以外には時間の無駄 質問失礼します LISPでLinux向けのDAWアプリケーション(seq24のような)小規模なものが作りたいのですが, SchemeとCommonLISPの選択だと後者で間違えないでしょうか? また音系ライブラリの充実度とかも教えていただければ助かります 環境はdebianのsidにemacsとroswellです。 puredate使った方がいいでない?tcp/udpも使えるし、lispでサーバ書けばいいんじゃない 道はnilを生ず、nilはアトムを生じ、アトムはS式を生じ、S式は万物を生ず。なるズルい帯に釣られて初めてLISP買っちまった 初めての人に向けた宣伝文…? map族で遊んで楽しんでるけどmapconだけ名前が変なの気になって仕方ないたすけて 対応するcar版のmapcanのnはnconcでわかるけどじゃあなんでmapcdnじゃないんだ 漠然と concatenate の con かなーと思ってた じゃあ can は何だよってなるけど あ、それでいいかありがとう map CAr N-conc → mapcan map cdr n-CONc → mapcon 腑に落ちた 多値をわざわざ実装する意味って何なんだろう? truncate/remainderを一気に得られるのは確かに便利だけどさ コンシング無しだからパフォーマンスが良い? 自分で書くときも(数個の、一様でない)リストを返すより、多値で返すのが良い習慣? 基本的な意義は最適化への期待だね。 リストで書くより意図が伝わりやすいから、実際には使われない値の計算を省くとかしやすいかもしれない。 多値を普通の値として扱うと先頭要素が返るってのもある。 メインとオマケみたいな関係にある値を多値で返すと、メインの値へのアクセスには car とか通さなくていいとか。 一つの値だけを返してた関数を拡張するとき、多値なら互換性を壊さずに他の値も返せるとか。 ただ LISP はリスト処理が得意な言語だから、迷ったらリストを使う方向でいいと思う。 なぜ未だにLispなのか? Lispはメモリアクセスが演算と同じかむしろ早かったような時代に作られた言語。 キャッシュ付きのパイプライン方式のプロセッサとは相性が悪い。 メモリをポインターでたぐりまくるのでは性能が出ない。 また、スレッド並列化や分散並列化は難しいだろ? 型付けまくって配列メインならcに並ぶパフォーマンス出るだろ まああんまり使い過ぎるとlispっぽくなくてlispである意味なくなっちゃうんですけどね そもそもパフォーマンスの定義がlispでは難しい 極論を言えば環境に依らない計算は全てコンパイル時に済ますように(普通な見た目で)書けるし 他言語コンパイラにも定数畳み込みあるけどほんと微々たるもんだ まあ、個々に良いとこ挙げても結局Lisp Is Syntactically Pureが全て これがただ一つの本質 なぜlispなのか。そりは処理系がつくりやすいからでは。で、なぜForthではないんかと。 構文解析がほぼ不要だから、簡単な LISP 処理系を書くってのは演習とかで見かけるけど… それを目当てに言語を選ぶことってあんまりないと思う。 LISP の強みはマクロだよ。 リスト処理が得意な言語で、コードもリストとして書いてるから、メタプログラミングがやりやすい。 そうなん?Luaみたいにゲームのシナリオスクリプト記述用として需要があるのかと。 うちゲームじゃないけど使ってるよ スクリプト用に LISP 組み込む形って、 Emacs くらいしか生き残ってないよね… 相性自体は悪くないはずなんだけど。 Lua とかのほうが手を出しやすいんだろうね。 ポータブルが取り柄、知っていればどんな環境でもlispにできる (gcを考えない)lisp実装はワンライナーまであるし 慣れた関数マクロも使いたきゃ足りなきゃ実装例コピペすればいい schemeはwebの仕様書に網羅的な実装例、clは…なんだろ cltl2、特にappendixあたりか おれはbackquoteの実装例が全くプリミティブじゃないのに驚いた 拡張言語にemacsみたいな生lispはちょっとなあ… 今更lispを勉強しようって人少ないだろうし、せめて()を隠蔽しないと emacsはオモチャとしては惹かれるんだけど、正直vimの方が使いやすいごめん(ポールもvi派だし) guile採用してるのはそれなりにある gimpやgnucashとか ここcommon lispスレだよオレlisp話はlispスレでやれば 今時のcommon lispの開発環境はroswellとemacsをインストールすれば完了? roswellは仮想環境作って真面目な開発&テストするならオススメ clの処理系はオプション指定法がバラバラなのでそれもラップしてくれる rcファイルもroswellが管理する カジュアル用途ならオススメできない ホーム直下の深い階層にバージョン違いの処理系やライブラリがバージョン毎にズラズラ 普及してるsbclとclispを生で普通に使えばよいよ 2種類rcファイル書くくらいなんでもない えっとつまり複雑なので初心者には何が何だか分からんくなるのがオチ、ということ >>723 5年位離れてたわけで全くの初心者ではないんだ >>722 完全な盲点だった、Personal Edition試してみる ふたりともthnks 上の人ではないのだけれどLispworksでSLIMEみたいに関数の仮引数をミニバッファに表示させることはできますか? C:\Program Files\LispWorks Personal\lib\7-1-0-0\examples\editor\commands\space-show-arglist.lisp をロードしたら表示できましたありがとうございます。 quickdocsのサービス終了してたんだけど代わりになるようなサイトできたの? それとも純粋に終了しただけ? >>734 こっちのが見やすいしかっこいいですね、ありがとうございます。 >>731 情報がふるくなっていたので古い情報を掲載するなら閉鎖しろと文句をつけた方がおりましてそれをうけて情報を更新するのではなく閉鎖という経緯 文句をつけた方が責任をとるべく代りのサイトを構築中 >>737 文句つけた奴がやらないパターンじゃないの… >>737 >>731 ググれば見つかる。 初めて探したけどすぐ見つかった。 あれ一晩バッチ回せば更新できるみたいな感じじゃなかったんだ 質問です。 (ql:quickload :burgled-batteries) としたら、 Unable to determine Python include directory. といわれます。 どうしたら良いのですか? >>742 (ql:quickload :cl4py) する 「Lispは数学そのものです」って言われてるけどどの辺が数学なのですか? Lispを深く学べば分かる? ラムダ計算を元にしてるからだろうね ただ関数型言語はみんなそうだけどね その手の謳い文句は(マクロや状態を考えなければ)文法が数学でモデル化しやすい程度にシンプル、意の事が多いとおもう まあ数学程度で測れるほど本気のlispは浅くないから真に受けんな ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる