Lisp Scheme Part40 [転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2015/03/16(月) 13:45:52.92ID:EEYZoZ1i
Common Lisp、SchemeをはじめとするLisp族全般のスレです

■前スレ
Lisp Scheme Part39
http://peace.2ch.net/test/read.cgi/tech/1408017352/

■テンプレ
ttp://wiki.fdiary.net/lisp/

■関連スレ
【入門】Common Lisp その11【質問よろず】
http://peace.2ch.net/test/read.cgi/tech/1411307361/
【Scheme】Schemeインタプリタ Mosh Part1【Lisp】
http://peace.2ch.net/test/read.cgi/tech/1272469779/
【Lisp】プログラミング言語 Clojure #3【JVM】
http://peace.2ch.net/test/read.cgi/tech/1380333808/
【魔法】リリカル☆Lisp【言語】
http://peace.2ch.net/test/read.cgi/tech/1183396621/
2017/12/10(日) 03:57:50.25ID:bmx+OvdS
80年代のAI理論が役立たずだからだろ。
2017/12/10(日) 05:17:42.36ID:alL+GiY3
んなこたーない
2017/12/12(火) 04:12:35.32ID:0ontp/1M
中身はif分並べただけの実装だらけ。
2017/12/13(水) 19:52:34.13ID:yTQPqafe
>>725
LISPのマクロってたいしたことないよ。それがLISPの本質でもないし。
ただインタプリタでC風にマクロが書けるというだけで。

マクロはマクロなんで、LISP内部で置き換えするだけで本質的なコード処理はしてないし。
それ(マクロ)が記号処理の本質ではないし。
何ならCのマクロ使って記号処理しましたって公開してみ。笑われるだけだから。
LISPの世界はこの程度の話すら理解できてないから誤解されているといっている訳。

だいたい最近までOpenSourceでScheme処理系開発してた連中が居たけれども、
彼らがAIと言った事はただの一つもないよ(w
2017/12/13(水) 20:00:39.22ID:yTQPqafe
おいらも735に賛成。
エキスパートシステムは失敗と無駄そのもの。第五世代も。

現実には民間企業ではMSエクセルが経営支援機能を果たしている。
表計算がAIより機能を果たしている皮肉。
2017/12/13(水) 22:45:23.21ID:0KXAmUZF
いやマクロ使わなかったら
Lisp使う意味ほとんどないだろ
2017/12/13(水) 22:49:24.98ID:Iqcr0fg8
誰かコイツに構ってやれよ薄情だなおまえらw
2017/12/14(木) 01:05:25.22ID:dCJIi5Cz
インタプリタだとかCのプリプロセッサマクロだとか、イカレ過ぎててツッコミどころすらわからんw
2017/12/14(木) 03:33:21.97ID:fsO62Lbi
ディープラーニングを機械学習と言えば詐欺臭はでない。人工知能なんて言うから投資詐欺に使う奴が出てくる。
既存のTCP/IP使ったクライアントサーバシステムをクラウドなんて言い出すのと同じ。
2017/12/15(金) 04:45:54.58ID:KHNYpOof
みんなschemeで何作ってるの?
これからscheme始める人は何作るべき?
2017/12/15(金) 11:06:11.48ID:pWQR70OL
lispインタプリタ
2017/12/15(金) 15:36:43.16ID:+BtaN/Vr
好きなもん作ればええがな
2017/12/16(土) 21:12:53.74ID:6we8nAFi
俺はホームページ自動作成
2017/12/16(土) 21:18:33.39ID:6we8nAFi
あとC++に組み込んで3Dモデルの作成しようと思ったがまだ上手く行ってない

しかし、おかげで継続が理解できてJSやC#のコルーチンが中でどう動いてるの、とか
本当に勉強になった
人に説明できるようになって仕事に役立ったよ
2017/12/16(土) 22:40:58.31ID:0h/cQnhY
LISPは計算コストの感覚が掴みにくいのが難点。
2017/12/16(土) 22:59:36.86ID:x6Q70KZj
実測せよ!
2017/12/16(土) 23:02:30.22ID:z0aQUVNx
継続理解出来ない😭
754デフォルトの名無しさん
垢版 |
2017/12/16(土) 23:04:09.78ID:6cm/hyEb
あれは理解するものじゃない
感じるんだ
2017/12/17(日) 00:33:44.93ID:0YixwDt0
CPUのコールスタックがわかってれば、スタックでなくヒープを使い捨てることにしたと思えば理解は容易いんじゃないか。
プログラミング言語の抽象度しか知らないならCPS変換から入るのが早道かも。
2017/12/17(日) 01:22:25.09ID:vupC7usA
私も CPS で考えるのが早道だと思う。
CPS で考えた時に表出する環境の受渡しを普段の Scheme では暗黙にやってる感じ。
2017/12/17(日) 12:04:50.86ID:eoJ80v7u
俺はコールスタックからだったが
>CPS
こういう捉えかたもあるんだね
知らなかった、ありがとう!
2017/12/17(日) 13:44:07.44ID:qZUcJPEk
>>753
ナカーマ
誰かこのスレで解説してー
2017/12/17(日) 14:47:33.87ID:/lXwOr1A
関数の戻り値が渡る先を操作できるだけじゃん。

トップレベルの特異性には注意だけど。
760デフォルトの名無しさん
垢版 |
2017/12/18(月) 06:11:49.84ID:RkLzSeZU
c++で継続はライブラリ使うだけで良いみたいだけど
C言語では継続はマシン語いじらないと実現出来ないの?
2017/12/18(月) 06:17:47.07ID:qvbmzFlP
ロングジャンプが継続
2017/12/18(月) 15:55:48.42ID:uwunIJyp
>>760
C++ではライブラリで継続が使えるってどういうこと?
2017/12/18(月) 20:02:37.96ID:1AqL5NX7
>>760,762
このあたりの話かな。
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0534r3.pdf
今のところはまだ提案があるだけで標準に入ったわけではない。

継続を表現するライブラリっつっても、
そのライブラリの中身は何がしかアーキテクチャ依存になるだろうけどな。
2017/12/18(月) 21:02:09.62ID:Idgcm8jE
C++には、GCとか実装から切り離して、実行環境をカプセル化した
関数オブジェクトがあるから、そのことかも
2017/12/18(月) 21:06:41.77ID:Idgcm8jE
ええと、一応念のため説明させていただきますが、C++では関数は
オブジェクトではないのです……
2017/12/18(月) 23:12:15.36ID:7/ciCMNl
>>763
うおぉ、なにこれ!
情報ありがとう。
2017/12/20(水) 05:00:04.59ID:a6n0mn8s
Exaリーディングのすゝめ
https://www.slideshare.net/ShinichiMakino1/exa-84358376

👆これええな
schemeでも読んだら勉強になる、程よい大きさのコードないものか
768デフォルトの名無しさん
垢版 |
2017/12/23(土) 21:49:26.76ID:YzWkPP/t
schemeについてのことではなくてelispについてなんですが、同じかもしれないと
おもってお尋ねします。コードを書いた実行をして、(コードを読み込んで)
そのあとその実行して読み込ませたものをclearして、(書いているコードはそのまま
なんですが、読み込んだという事実をclearしたい)それで別のコードを下に書いて
その下に書いたものだけを実行するという風にしたいのですが、そういうclearする
ことは可能でしょうか?どのようにするのでしょうか?
2017/12/23(土) 23:20:52.51ID:BI9Rd4SH
>>767
3imp
770デフォルトの名無しさん
垢版 |
2017/12/23(土) 23:28:54.90ID:YzWkPP/t
768の質問を取り消します。後日に尋ねるかもしれませんがその時には
よろしくお願いします
2017/12/23(土) 23:54:12.88ID:3ZTUAfyp
>>769
schemeってみんなインタプリタとかコンパイラの実装ばっかですね
schemeの勉強でもmapやappendを実装しましょうみたいなのばっかやし
まあguiもwebもゲームも低レイヤーも出来ないとなれば仕方ないんかな
2017/12/24(日) 01:13:04.67ID:Za7OGTTm
皆さんclassとかrecordとか使うんですか?
2017/12/24(日) 04:11:25.21ID:j1+IHmNs
>>771
あまり話題に上がらないけど GTK バインディングとかウェブフレームワークとかは有る。

FFI を使えばどんなライブラリでも使えるのでとりたてて分野が限定されているということは無い。
メモリ管理とか、Scheme として自然に使えるようにする面倒くささはあるので、
それを整備したものってのは最終的には物量の問題だと思う。
Chicken には Eggs が、 Racket には Planet というモジュール管理システムがあって公式リポジトリに登録されているライブラリの量もまあまあ多いので、
そのあたりから興味があるものを探してみたらいいんじゃない?
2017/12/24(日) 04:26:34.47ID:j1+IHmNs
>>772
Scheme の record は R6RS と R7RS で違うし SRFI でも微妙に違うのがいくつもあるので、
処理系によってサポート状況が違って使いにくいってのは感じるかな。
それでも多少ラップすればそれなりの移植性は確保できるので、
個人的には積極的に使ってる。

class というかオブジェクトシステムについては Scheme ではまとまった提案がないから
CLOS をベースにデザインされたものが多いとはいうものの処理系による差が激しくて、
最初から特定の処理系をターゲットにすると決めている場合じゃないと使わないな。
でも使うと決めたら積極的に使ってる。
2017/12/24(日) 18:42:32.30ID:Za7OGTTm
webやるならclojureで良さそう(´・_・`)
2017/12/24(日) 22:39:11.33ID:WikwUycQ
人生3度目の the little schemer です。
xyzzy で確かめながら読んでいますが、一つ疑問が生じました。
教科書では

(lat? (atom turkey or))

と印刷されていますが、手元の処理系(gauche 0.9.5) では

(lat? '(atom turkey or))

と関数 lat? の引数に ' をつけないとうまくいかないのです。
これはどういう理由なのでしょうか?この ' は scheme の用語ではなんと呼ばれているのでしょうか?
ずっと教科書を読んでいくうちに自然とわかってくる事項でしょうか?

よろしくお願いいたします。
2017/12/24(日) 23:08:21.47ID:j1+IHmNs
>>776
' は quote の略表記。 たとえば '(a b c) は (quote (a b c)) と書いても同じ。

私はその本を持ってないからそのコードで何を教えようとしてるのかよくわかんないけど、
quote はかなり基本的な要素なので理解できるようにしてるとは思う
2017/12/24(日) 23:51:49.77ID:WikwUycQ
>>777
ご回答ありがとうございます!
教科書 'the little schemer' -> https://www.amazon.co.jp/dp/4274068269 有名そうで読んでいる人が多そうなものを選びました!
2017/12/25(月) 00:30:34.51ID:eatjhcJn
little schemerはsicpの前に読む人が多いのかな
自分は読まずにsicpに突っ込む予定だけど
2017/12/25(月) 02:53:01.57ID:BGNcpfiB
SICP は計算機科学の専門書だし、趣味プログラマには高度すぎるんじゃね?
SICP は現実的な部分についても書いてないから Scheme を (日常的なスプリクティング用途程度に) 普段使いしたいって
程度の気持ちで読み始めると、理論の部分で挫折して放り投げがちなんじゃないかな?

いや、ガチで背景にある理論を理解したいって志があるなら SICP から読むことに反対なわけではないけど、
もっと緩く Scheme を使いたいっていう気持ちで使う人も歓迎したいし、
最終的に SICP を読んで理解するのが前提みたいに言うのはちょっとどうかと思うよ。
2017/12/25(月) 21:10:21.58ID:6RDgxEW3
>>776
その「atom」ってのが実は手続きなのよ。本文ではなく前文かどこかに定義が載っていたと思う。
2017/12/25(月) 21:16:46.95ID:6RDgxEW3
>>781
忘れてくれ。手元の本見たら、手続きなのはatom?だった。
2017/12/26(火) 23:21:38.18ID:yva2ERhc
xyzzyとgauche並行とか混乱するだけだぞ
2017/12/27(水) 21:59:50.53ID:I7jb5yVK
最近はnumpyにしか実装がない数値計算法が増えた
Racketはnumpyのインターフェースあるけど、他はどう?
2017/12/28(木) 00:32:55.47ID:gVqXCAzj
Racket にはそんな変態なものがあるんか。
どうやって実現しているのか興味あるけど、ググっても見つけられなかった。
2017/12/28(木) 16:57:30.14ID:kqg0/H36
ラケット王国の和訳まだかなーチンチン
2017/12/29(金) 08:38:15.66ID:xmeHjPXR
C++のインターフェースある処理系ならboost.numpyでnumpyは動きそうだが
2017/12/29(金) 20:54:07.52ID:UJC0BA5u
clmlってどうなん
2017/12/29(金) 21:45:51.42ID:srQz1veo
機械学習ライブラリとしてなら優秀だけど
今話題になってるディープラーニング対応してない
2017/12/30(土) 01:36:01.07ID:JIvbFZ2K
>>787
boost.numpy はテンプレートもだばだば使ってるし、それをあらためて動的型の言語にバインディングするのあほらしいやろ。
2017/12/30(土) 05:34:18.51ID:QS05oFb5
numpyも実体はlapackのインターフェース
792デフォルトの名無しさん
垢版 |
2017/12/30(土) 21:52:30.82ID:wf2zlY04
Fortran最強か。
2017/12/30(土) 22:04:07.78ID:NAE2hL7d
gaucheかchickenでGUIやるの厳しい?
tkはlinuxだとめっちゃ汚いから嫌なんだけど
Iupというの気になるんだけど試してみた人いませんか
2017/12/30(土) 23:13:03.41ID:JIvbFZ2K
Gauche や Chicken なら GTK バインディングが楽に使えると思う。

私は使ったことないけど Racket の GUI ライブラリは使いやすいみたいに聞くので、
処理系にこだわりがないなら試してみてもいいんじゃない?
2017/12/31(日) 20:27:42.78ID:Pbe3xhzg
gaucheとchickenってどっちがいいの?
2018/01/01(月) 00:26:59.62ID:jbWUirsb
用途や好みによる
797デフォルトの名無しさん
垢版 |
2018/01/01(月) 15:16:31.98ID:rap/X9U7
(display "Happy New Year.")
2018/01/01(月) 17:48:15.95ID:UkMdhu1o
今からClojure入門しようと思うんですけど
「Clojure for the Brave and True」
この入門書ってどうなんでしょう?
ポチるか悩んでいるので一押し欲しいです
2018/01/01(月) 20:52:29.11ID:aCEoQmmW
それって無料公開されてないか?
読んでないが
2018/01/01(月) 22:42:18.07ID:REb0gAPE
https://www.braveclojure.com/clojure-for-the-brave-and-true/
2018/01/02(火) 02:15:48.60ID:U19H6e17
Clojure スレで相談した方がよくない?
2018/01/03(水) 01:18:40.47ID:E10k9nmq
(特定のスレに書き込めないテスト)
2018/01/03(水) 18:25:40.25ID:1ORngv96
>>776
5章になって急に難しくなりました‥
http://d.hatena.ne.jp/kazu-yamamoto/20101021/1287625788
>リストのリストに対して、深く再帰します。見方を変えれば、これは木構造に対する再帰です。

それまでは(復習は必要ですが)理解に苦しむことはなかったんですが‥
2018/01/03(水) 21:17:21.44ID:E10k9nmq
本は仕様の確認程度に留めて処理系の実装を一通り見た方が理解が早いよ
俺は昔SECDR-SchemeやTiny-Scheme辺りのソース読んでSchemeの全てを理解した
2018/01/04(木) 06:24:55.50ID:ZoCOsoct
勉強していく上で参考になるプログラムを見つけられないのが痛い
特にgaucheとかchickenでのオブジェクト指向をどうやって身につければいいの
2018/01/04(木) 19:59:41.91ID:l3TQzZ4M
Gauche で書いたプロジェクトとしては WiLiKi とかどう?
shiro さん自身が書いてるのがいちばん Gauche 的に綺麗な書き方じゃね?
2018/01/04(木) 20:10:19.94ID:L/Z2udtD
gaucheがライブラリを含めて固まってから書かれたならそう断言できるけど……
2018/01/05(金) 07:35:42.44ID:zqdaz1Y8
RacketのプログラムをCと同じぐらいに高速化したい
Checkenで動くように改変すれば手間かからずに高速化出来るんだろうか
2018/01/05(金) 07:47:07.98ID:Lf4apqlY
なんで Checken? Chez の方が速いでしょう。
2018/01/05(金) 12:55:55.45ID:CY5W8ai3
Racket は速い方なので、それで不満なら単純に (手間をかけずに) 移植してもたいした高速化は望めないと思う。
処理系ごとのクセはあるから場合によっては載せ替えるだけで高速化になることも無いわけじゃないが、
やってみないと (検証の手間をかけないと) 結果はわからぬ。
2018/01/06(土) 20:15:13.51ID:EqGxuZle
shenってどうなの?
2018/01/06(土) 20:25:52.03ID:mAB25EnJ
どうとは?
2018/01/06(土) 20:53:46.77ID:/zx+3sJQ
使ってみた感想あれば聞きたいね
日本語情報少ないし、用途もよくわからない
2018/01/06(土) 23:25:04.14ID:+G0EWjNB
Prolog を結合させた玩具か
2018/01/07(日) 01:55:08.52ID:xXD5IJqM
実装がたくさんあってスマホで遊べるくらいしか知らん
2018/01/08(月) 07:56:07.49ID:iCZsrYFg
スマホアプリもあるんか
シーケント計算ベースの型システムってのが難しそう
2018/01/08(月) 14:33:12.38ID:GiAqRu5e
>>816
> シーケント計算ベースの型システムってのが難しそう

別にそういうことはない
型システムを良く行われるように自然演繹で定式化するかシーケント計算で定式化するかという定式化のスタイルの違いだけだから
大雑把に言えばシーケント計算は自然演繹のmeta calculusというスタイルだというだけだからね
2018/01/12(金) 00:43:08.04ID:FCuivLM3
https://github.com/adtac/autovpn/blob/master/autovpn.go
このopenvpnを使ってvpngateに接続するだけの、80行程度のgolangのコードをgaucheで書くとどんな感じになりますでしょうか
2018/01/13(土) 04:15:46.39ID:l9Ynoqag
誰かー
2018/01/13(土) 20:46:00.95ID:SxvD86sf
>>818
こんな感じかな?

https://ideone.com/w5FtZ9

ideone はコード中の URL らしきものを適当にぼやかす機能があるらしく、勝手に置き換えられちゃった。
「download」のリンクでは本来の通りになるみたいなので、 html からコピペじゃなくてそっちを使ってね。
あと、 openvpn を手元で導入せずにそれっぽく書いたのでほんとにちゃんと動くか確かめてないぽよ〜
2018/01/13(土) 20:47:24.55ID:SxvD86sf
>>820
いいかげんに書いたけど、まじめに書くならもうちょっと小さい手続きに分割するかも
2018/01/14(日) 01:34:58.23ID:+lMGsT0I
>>820
ありがと😍
2018/01/15(月) 03:15:00.90ID:PgCT585d
ちゃんと使えた?
2018/01/15(月) 04:35:38.24ID:BnLwMjmV
ちょこっと修正すれば接続は出来ました
+(use srfi-11)
- (set! chosenCountry (list-ref 1)))
+ (set! chosenCountry (list-ref args 1)))

でもCtrl-cするとエラーが出て[autovpn] try another VPN? (y/n)に進めない😱

^CMon Jan 15 04:25:51 2018 event_wait : Interrupted system call (code=4)
*** UNHANDLED-SIGNAL-ERROR: unhandled signal 2 (SIGINT)
Stack Trace:
_______________________________________
0 (sys-waitpid (process-pid process) :nohang nohang?)
at "/usr/share/gauche-0.9/0.9.5/lib/gauche/process.scm":436
1 (process-wait process)
at "./autovpn.scm":42
2 (%with-signal-handlers (list (cons (%make-sigset SIGTERM) (^ ...
expanded from (with-signal-handlers ((SIGTERM (process-send-signal process
at "./autovpn.scm":40
3 (fn item)
at "/usr/share/gauche-0.9/0.9.5/lib/gauche/procedure.scm":303
2018/01/19(金) 06:28:45.76ID:Sx7ZjBeS
>>824
あー、たぶんやけどシグナルマスクがアレなんとちゃうかな。
先にチャイルドプロセスにシグナルが伝播して終了しとんのにシグナルを送ろうとしてもうそのプロセスのうなっとるって感じ。
Windows だとシグナルマスクはなんにも意味なくて、 Unix (POSIX ?) とは扱いが違うんで、ワイにはようわからんのやわ。
すまんの
2018/01/19(金) 20:50:44.46ID:mTCJnuoL
自分でも調べてみるわ😷
2018/01/20(土) 19:46:46.44ID:5w5DrmOx
:optional引数ってどうやって指定するんですか(?_?)
2018/01/21(日) 02:44:01.85ID:+OtUX/+i
Scheme でオプショナル引数を受け取る手続きをどう書くか? という意味?
2018/01/21(日) 03:29:23.34ID:88fiVAag
オプショナル引数を受け取れる手続きにどうやって渡すかという意味でつ
2018/01/21(日) 04:44:31.01ID:+OtUX/+i
それって聞かなきゃわからんような要素あるか?
普通に引数を書く以外にすることないだろ。
831デフォルトの名無しさん
垢版 |
2018/02/03(土) 09:20:23.41ID:AXuwnjr7
はちみつ餃子 ◆8X2XSCHEME怒らせたら大したもんやで
2018/02/03(土) 14:16:47.87ID:Rohe4eLB
(apply オプショナル引数付き関数 (list 引数))
こうです
2018/02/03(土) 18:37:12.13ID:h6JvH1q6
あー、なるほど、そういうことを聞きたかったのか。
2018/02/23(金) 00:09:07.20ID:Gx1M+RW0
Lisp勉強するのに、白と黒の扉、聖霊の箱って役に立つ?
2018/02/23(金) 00:38:20.14ID:mpvgXBL2
>>834
amazon でみたところ、「白と黒の扉」とかは、オートマトンやチューリングマシンの話だから lisp とはあまり関係ないんじゃないかな?
いや、 lisp でオートマトンやチューリングマシンを記述したいのだったら話は別だが

この手の話は、私は手元に
https://www.amazon.co.jp/dp/4627805500/
を置いて逐次参照しています、チューリングマシンの適当な発展書があれば、教えていただけるとうれしい
2018/02/23(金) 20:04:19.51ID:VPGO0qVd
>>834
そういう目的には合ってないと思う
ある程度知ってる人が読みものとして楽しむもの
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況