X



Lisp Scheme Part40 [転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん垢版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/
0888デフォルトの名無しさん垢版2018/03/27(火) 22:03:59.18ID:vSyzL0sA
というか、おととし最後に聞いたときには>>884の言う通りでほぼ決まりみたいな話だった
C/C++では何と、スタックの中を書き換えることができるのだ!
0891デフォルトの名無しさん垢版2018/03/29(木) 06:38:02.92ID:xL1sPJzZ
ヨーロッパや南米での事例が多いとか

https://medium.com/@newapplesho/今時-2017-のsmalltalkの始めかた-93c044820e1b

日本にも地味に仕事あるらしいけど守秘義務で見えにくい

スーパーの古いレジ(POSシステム)で使われているのを見かけたのはNEC系のこれか?

http://tech.nikkeibp.co.jp/it/members/NT/JIREI/20011220/1/

比較的最近の話題はLispばりにスタートアップに活用されたこと

http://web.archive.org/web/20171111102557/https://thepedia.co/article/1068/
0892デフォルトの名無しさん垢版2018/03/29(木) 21:46:13.19ID:aMjJrqbe
>>890
> Smalltalkって業務で使ってるとこあるのかな
> LISP系よりはありそうなんだが

少なくともアメリカでは実アプリをSmalltalkで作ってるケースはほとんどないんじゃないと思うが
プロトタイプをSmalltalkでちゃっちゃと作ってしまい動作確認をするってのはアメリカでも昔からさほど珍しくないそうだが

ちなみにCommon Lispはアメリカでは以前から実用アプリの記述言語としてそれなりの頻度で使われてるよ
0895デフォルトの名無しさん垢版2018/03/30(金) 07:19:01.27ID:wy67wuPJ
>>894
Cではと限定してんだから、普通にsetjmpと言ってほしいんだが…
IP(インストラクションポインタ)だけを指して限定的な継続言われても逆に分かりにくいと思うが
0896デフォルトの名無しさん垢版2018/03/30(金) 07:29:31.52ID:YaBZvbti
環境をあえて使わない継続の応用はあっても
環境を含むことができない機構を(「限定的」と断ったとしても)継続だと言い張るのはオカシイよ
0897デフォルトの名無しさん垢版2018/03/30(金) 13:49:13.71ID:a6Uq4iez
別に「限定継続/delimited continuation」ってものもあるしな
話がややこしくなるだけで理解の助けにならない
0906デフォルトの名無しさん垢版2018/04/14(土) 10:00:00.96ID:BMT8UCYv
Scheme -> Clojure -> javascript の順番に変換するなら、

Clojure -> javascript はすでに自動変換だし、

Scheme -> Clojure も define -> def 等、機械的な置き換えである程度出来るから、

単純なプログラムを変換することは出来るけど、それほど需要がないから無いんじゃないの。
0908デフォルトの名無しさん垢版2018/04/14(土) 17:47:52.07ID:BMT8UCYv
emscripten で C言語 -> javascript に変換が可能だから、Chicken で Scheme -> C言語 に変換すれば、
Scheme -> C言語 -> javascript が実行できるハズか。うまく通らないコードもあるだろうけど。
0913デフォルトの名無しさん垢版2018/04/22(日) 23:13:19.09ID:vfnhSJ7e
ところで「ブラウザでCLを動的にJSにトランスパイル可能なライブラリ」って聞いたら何が思い浮かびます?
0916デフォルトの名無しさん垢版2018/05/02(水) 09:24:55.05ID:Ofc9Qt+3
質問です!

動的スコープってスタックに積み上げるだけで実現できるじゃないですか
静的スコープってどうやって実装すればいいんですか?ヒント下さい
0918デフォルトの名無しさん垢版2018/05/02(水) 13:03:03.19ID:Ofc9Qt+3
>>917
なるほど、意味解析時にスコープの構造をスタックで再現しといて
eval時に該当するスタックを参照できればいいってことですよね。

なんだか、ソースマップみたいですね。ひとつひとつのAtomに該当するスコープの参照を持たせるとなると、なんか重くなりそうですね
0919デフォルトの名無しさん垢版2018/05/11(金) 15:15:36.81ID:jYn7b+yh
Have you ever read The Little Schemer? => #t
Have you ever read The Seasoned Schemer? => #t
Have you ever read The Reasoned Schemer? => #t
Have you ever read The Little Prover? => #t
Have you ever read The Little Typer? => #f
What's The Little Typer? => Pie language book.
0920デフォルトの名無しさん垢版2018/05/13(日) 10:00:19.91ID:V4PsQf4P
David Thrane Christiansen のやっている Idris や Pie language といえば、
依存型 (dependent type) を使用した Type-Driven Development かな。
定理証明系の次の話題としては順当なところ。
0922デフォルトの名無しさん垢版2018/05/13(日) 13:45:19.45ID:V4PsQf4P
依存型についてのテキストはこれまでにこういうのが出てるよ。
Edwin Brady "Type-Driven Development with Idris"
Adam Chlipala "Certified Programming with Dependent Types"
Aaron Stump "Verified Functional Programming in Agda"

Edwin Brady と David Thrane Christiansen は協力して Idris を作ったひとで、
今回、Christiansen が Racket 上で Pie language を実装したみたい。
Pie languageの実装を理解させる本が出ることで Type-Driven Development の
低レベルでの詳細が明快になると期待できる感じかな。
0923デフォルトの名無しさん垢版2018/05/23(水) 20:15:24.16ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

VU7Z1
0924デフォルトの名無しさん垢版2018/05/23(水) 20:17:31.53ID:ddkD19I+
ちょっと聞きたいんですけど
JSONをS式で書いたらどんな書き方になると思いますか?

(users . (
((Name . John)
(Age . 25))
((Name . Mike)
(Age . 24))
))

みたいな感じですか?
0927デフォルトの名無しさん垢版2018/05/24(木) 01:13:53.62ID:NR1AW6HZ
素直に連想配列にした方が良いのか、それだと巨大なデータの時にアクセス効率が悪いからハッシュテーブルやdefstructした方が良いのかとか、一筋縄では行かないだろう
0928はちみつ餃子 ◆8X2XSCHEME 垢版2018/05/24(木) 01:32:06.19ID:jqqWnK8Z
Expat みたいな方式で、オブジェクトの構築はユーザまかせにするってのもひとつの案かな。
まあ、 JSON が必要な場面は設定ファイルとかウェブ API の類とかだと思うので、
極端に巨大な JSON を仮定する必要はあまりないと思うが……。
0929デフォルトの名無しさん垢版2018/05/27(日) 13:45:27.94ID:mYmUirqO
JSONをS式で書くといっても、いろいろやり方はあるよね。
Pie language みたいにDSLを使って、Name型、Age型、users型を定義すれば、
型推論、Type-Driven Development を導入できる。
0930924垢版2018/05/27(日) 13:52:56.50ID:zSa68/cd
ほえー、難しいですな
0932デフォルトの名無しさん垢版2018/05/28(月) 11:53:10.90ID:IqAZvII/
PIE には、元々「インド・ヨーロッパ祖語」(Proto-Indo-European language) という意味があるらしい。
そこから転じて Type-Driven Development の祖語たれかし云々。
Pie言語のような Type-Driven Development と J-Bob(ACL2) の定理証明器の組み合わせによって、
新しいプログラミング・サイクルがもたらされる。
[1] 型を定義する(自動的に型チェックもされる)だけで、
[2] Type-Driven Development 環境が型定義から実行可能なプログラムの雛形を生成してくれる。
[3] プログラムの雛形に実装部分を書き加える。
[4] 書き加えた実装部分の数学的正しさを定理証明器でチェックする。
こんな感じで開発するだけでプログラムの正しさが保証付きで出来上がる。もちろんOOPでもOK。
将来、ほとんどの言語がこういう機能を持つと思われる。
0933デフォルトの名無しさん垢版2018/05/28(月) 11:59:02.93ID:IqAZvII/
荒っぽく言うと、英文作成時にtypo checkerとgrammar checkerを併用すると、
正しい英文が簡単に書けてしまう。そのプログラミング言語版みたいなものかと。
0936デフォルトの名無しさん垢版2018/05/28(月) 18:05:56.53ID:Wvf3e53c
初心者なんだけど、qiitaでlispの勉強ブログやるのどう思う?
ブログとか自分の趣味ではないんだけど、勉強はかどるかと思って。
0937はちみつ餃子 ◆8X2XSCHEME 垢版2018/05/28(月) 23:57:23.63ID:wEzLaTj/
>>936
いいと思うよ。
ただ、 Qiita はブログホスティングサービスではなく、
「知識を共有する」ということをコンセプトにしたサイトだから、
やったことを箇条書きにするだけとかコードが貼っているだけみたいなのではなく、
自分に続く人に参考になるような書き方を心がけてね。
0938デフォルトの名無しさん垢版2018/05/29(火) 21:14:19.67ID:BqokYjF9
数行のコードをコンパイルしてみた
chickenでとても小さいバイナリが生成されて満足したあと
Racketが生成するバイナリの大きさに驚いた
そしてSBCLでやってみたらさらに5倍以上も大きくてビックリだわ

それぞれに理由があるのは分かるけど
0939デフォルトの名無しさん垢版2018/05/30(水) 09:11:29.12ID:qfpDXvj8
実行ファイルのサイズがでかくても役に立つアプリだったらいいんじゃないの
役に立たないアプリだからサイズが小さくないとまずいって話かな
0941デフォルトの名無しさん垢版2018/05/30(水) 09:59:21.93ID:+JLqa4/r
SBCLで「ビックリ」したのはこれ

(eq 'abc 'abc) ;=> T
(eq 'アイウエオ 'アイウエオ) ;=> T
'アイウエオ ;=> アイウエオ
'㌰㌰ ;=> ピコピコ

(setf (sb-ext:readtable-normalization *readtable*) nil) すれば変換されなくなる
http://www.sbcl.org/all-news.html#1.2.5
0942924垢版2018/05/30(水) 10:14:13.23ID:yDgT1YjT
皆様に質問です!

JSCLみたいに「サーバサイドもクライアントサイドもlispで!」みたいな思想のやつって他にもありますか?

単にトランスパイラというわけでなく、ブラウザでevalできるのが理想なんですけど...

よろしくおねがいします!
0944デフォルトの名無しさん垢版2018/05/30(水) 12:35:36.42ID:4OOLz1vE
>>939
自分はFDDの時代から使ってるような老害なので、バイナリは機能なりの大きさのほうが自然に感じるよ
まあ本体が小さくても巨大なランタイムが別にあるんだから同じだろと言われればそれまでだけど
0945デフォルトの名無しさん垢版2018/05/30(水) 12:43:43.30ID:ExxmvTi1
スマホで無駄にデカイバイナリーは迷惑だけどPCアプリのサイズなんて気にしない。
昔はユーザーもアプリサイズやメモリー使用量に敏感だったけど、今はそんなこと気にしてないみたいだし。
0946924垢版2018/05/30(水) 14:05:50.32ID:jr7ON4yo
>>943
なるほど、ありがとうございました。
0947デフォルトの名無しさん垢版2018/05/30(水) 14:20:42.30ID:jr7ON4yo
すみません、LISP初心者ですが、追加の質問させてください!

JSCLを試してみようとgithubのGetting StartedとBuildの項目に挑戦しています。
https://github.com/jscl-project/jscl

サーバでnpm install -g jsclしたあと、jscl-replコマンドを打つことでreplが動くところまではできたのですが
GithubのBuildの項目のところでつまずいています。

git clone https://github.com/jscl-project/jscl.git
することでnode_modulesやpackage.jsonなどが存在するプロジェクトディレクトリ上部に
jsclディレクトリが作成されたのですが(一体これはなんでしょう?サンプルプログラム集なのでしょうか)

replで(jscl:bootstrap)を評価しても
ERROR: The symbol `"BOOTSTRAP"' is not external in the package #<PACKAGE JSCL>.
と表示されてしまい、次のステップに進むことができません。

このステップは、githubのreadme.mdで
「あなたのLispにjscl.lispをロードし、ブートストラップ関数を呼び出して実装自体をコンパイルします」
「ソースツリーの最上部にjscl.jsファイルが生成されます。 これで、ブラウザでjscl.htmlを開いて使用できます。」
と記載があるので、(jscl:bootstrap)を実行することによりgit cloneで落としたプロジェクトをコンパイルし
出力されたjscl.htmlにApacheなど使ってアクセスできるようにすれば、bootstrap?とかいうサンプルアプリが動くと思っているのですが
何がいけないのでしょう??

マニアックな質問で申し訳ないのですが、ぜひお助け願います。
(ところでbootstrapってなんでしょうか?cssフレームワークのTwitter bootstrapのことでしょうか?)
0948デフォルトの名無しさん垢版2018/05/30(水) 19:57:16.76ID:EPh+XEfw
SBCLは実行ファイルを圧縮して作成できる
40MBが10〜15MB位になるはず
それでもデカイけどね
ちなみに起動時間は全く変わらない
0949947垢版2018/05/30(水) 23:32:16.24ID:jr7ON4yo
よく考えたらスタックオーバーフローとかで質問するべきだったかもしれません(´・ω・`;)
0950はちみつ餃子 ◆8X2XSCHEME 垢版2018/05/31(木) 00:05:36.49ID:wCoAkDam
>>947
> 「あなたのLispにjscl.lispをロードし、ブートストラップ関数を呼び出して実装自体をコンパイルします」

マニュアルの文章は、あなたが使っている LISP 処理系の上で jscl.lisp をロードした上で (jscl:bootstrap) を評価せよという意味だと思うんだけど、
あなたがやっているのは jscl-repl を起動した中で (jscl:bootstrap) を評価しているように読める。
そうだとしたらそんなものは無いので無いというエラーになるのはわかる。
0951947垢版2018/05/31(木) 10:01:35.83ID:eRJFRV4/
>>950
ご回答ありがとうございます!

つまりCLISPかなにか、適当な処理系をサーバにインストールして
そこから呼び出せばいいのですね!?

試してみます!
0955デフォルトの名無しさん垢版2018/06/30(土) 21:17:22.45ID:68JzM2MV
>>954
雰囲気ってのが曖昧だけど、質問内容が馬鹿げたものでもどんどんしていいよ。
初心者の質問内容がしょうもないことなのは普通のこと。
だけど、質問の仕方にはある程度の作法がある。

https://ja.stackoverflow.com/help

「ホントの初心者」というのは自分が何を知りたいのか理解していないことが多いので、
回答できる質問に修正されるまでしつこくコメントされるかもしれないけど、
それは非難ではなく回答するために必要な対話なので、面倒くさがらないでね。
0956 ◆QZaw55cn4c 垢版2018/07/01(日) 21:02:57.27ID:7W/RE1b9
>>955
>自分が何を知りたいのか理解していないこと
それがわかるようであれば、回答を半分得たも同然ですね…
私にはわからないことが沢山あります、それが減る気配もない…
0959はちみつ餃子 ◆8X2XSCHEME 垢版2018/07/03(火) 22:38:46.07ID:BKTruI85
>>958
ずっと兼業してるみたいだよ。

俳優としての履歴はここに書かれているけど、 (実際には仕事につながらなかったオーディションも含めると) 2003 年からスタートしてる。
http://practical-scheme.net/wiliki/wiliki.cgi?Shiro%3AAuditionRecords

スクウェアの映画の仕事を終えてから Scheme Arts という名前で法人 (といっても史郎さんひとりの会社だが)
を立ち上げてコンサルティングの仕事を始めて、そのほんの少し後から平行して俳優としても活動してることになる。
0961デフォルトの名無しさん垢版2018/07/04(水) 01:17:41.82ID:OTzKBqUL
関数型言語で画像処理をやってみたいんだけれど
Common Lispで画像読み込みの定番ってある?

debianでcl-png使おうとしたらlibpng12が必要みたいで
使えませんでした。(libpng16ならある)

clwikiに載っているimageライブラリでドキュメントが充実してるのって
cl-pngが一番なんだけど。
0963デフォルトの名無しさん垢版2018/07/04(水) 21:49:20.18ID:gFgZc5FG
KI1
0965デフォルトの名無しさん垢版2018/07/06(金) 01:28:47.94ID:xqwQ2rU4
ラムダ計算と純lispはともにチューリング完全
だからlambdaだけで純lispが作れるはず
実際、cons,car,cdrは作れる
(define (my-cons a d) (lambda (f) (f a d)))
(define (my-car ad) (ad (lambda (a d) a)))
(define (my-cdr ad) (ad (lambda (a d) d)))
でも、atom?またはpair?はどう作ればいいの?
0966デフォルトの名無しさん垢版2018/07/11(水) 13:07:02.79ID:7FwajRbN
教えてください。初心者です。

(defun test ()
(let ((result '(0 0 0 0 0 0 0)))
(format t "~{ ~a ~}" result)
(incf (nth 4 result) 7)
(incf (nth 6 result) 6)
result))

この関数なんですが、実行するたびに結果が変わるのです。

HOGE 28 > (test)
0 0 0 0 0 0 0
(0 0 0 0 7 0 6)

HOGE 29 > (test)
0 0 0 0 7 0 6
(0 0 0 0 14 0 12)

(let ((result (make-list 7 :initial-element 0)))...
にすれば意図したとおりに動作するのは分かっているのですが、
何で元の関数定義でだめなのかが分からないのです。
ちなみに、Lispworks 7.0 Windows 32bitです。
他の処理系でも同じような動作になるのでしょうか。
0967966垢版2018/07/11(水) 13:41:02.30ID:7FwajRbN
何でこうなるかは、何となくわからなくはないのですが(1回目の実行と2回目の実行で同じリストをletで束縛してるってことですよね?)、
letってそういう動作するのを想定して使わなきゃいけないものなのか、ってのがわかってないのです。
僕の理解では元の関数定義でいけそうな気がするのです。
0968966垢版2018/07/11(水) 15:14:10.25ID:7FwajRbN
(defparameter *FOO* '(bar bar bar))
(defun hoge-is-foo (&optional (piyo nil))
(let ((hoge '(fuga fuga fuga)))
(if piyo (setf *foo* hoge))
(format t "HOGE: ~{ ~a ~}~%" hoge)
(format t "*FOO*: ~{ ~a ~}~%" *foo*)
(if (eq hoge *foo*)
(format t "HOGE IS FOO!~%")
(format t "HOGE IS NOT FOO!~%"))))

PIYO 82 > (hoge-is-foo)
HOGE: FUGA FUGA FUGA
*FOO*: BAR BAR BAR
HOGE IS NOT FOO!
NIL

PIYO 83 > (hoge-is-foo t)
HOGE: FUGA FUGA FUGA
*FOO*: FUGA FUGA FUGA
HOGE IS FOO!
NIL

PIYO 84 > (setf (car *foo*) 'baz)
BAZ

PIYO 85 > (hoge-is-foo)
HOGE: BAZ FUGA FUGA
*FOO*: BAZ FUGA FUGA
HOGE IS FOO!
NIL

こーゆーもんなん?
0969デフォルトの名無しさん垢版2018/07/11(水) 15:25:01.53ID:16Hc9NDk
>>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) が返されるみたい。
0970969垢版2018/07/11(水) 16:28:25.75ID:16Hc9NDk
>>967
あ、質問の趣旨が違うか。

(defun hoge ()
'(1 2 3))

があるときに、

(eq (hoge) (hoge))

は、同じリストを返すのだから常に T になるのか?って話かな
0971966垢版2018/07/11(水) 17:18:46.59ID:7FwajRbN
>>970
966です。
僕が知りたかったのは>>969の内容です。どうもありがとうございました。
未定義動作なのですね。基本的にこのような破壊的代入は避けるってことですかね。

しかし、これが未定義だと、確率は低いでしょうけど、いつかどこかで事故が起こったりするんじゃないのかな。知らんけど。
0972デフォルトの名無しさん垢版2018/07/11(水) 19:41:32.56ID:16Hc9NDk
>>971
うーん、リストを破壊的に変更する場合、上のようにリテラルを破壊するのもまずいし、リテラルでなくても部分共有されたリストだと予想外の場所に影響が及ぶので、自分は安全とわかってないとやらないです。

破壊的変更をするのが前提なら、 list 関数や言及されてるmake-listで新しく作ったり、 copy-list で複製してからいじったりすることが多いかも。
0974966垢版2018/07/11(水) 20:23:44.77ID:7FwajRbN
>>972
破壊的な変更には注意が必要なこと自体は、入門書などを読んで知っていたのですが、
今回の例では関数を呼び出す度に別のリストをletが束縛するだろうjkと勝手に思っていました。

勉強になりました。ありがとうございます。
0975デフォルトの名無しさん垢版2018/07/11(水) 20:33:50.22ID:Igjhxsb4
>>966
SBCLは警告が出るから出ないように修正するだけだし、無視しても意図した通りに動く
LispWorksは警告出ないの?
0976966垢版2018/07/11(水) 20:46:42.70ID:7FwajRbN
>>975
でないっす。
0977966垢版2018/07/11(水) 21:11:34.91ID:7FwajRbN
自分の環境で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)
0978デフォルトの名無しさん垢版2018/07/11(水) 21:46:27.14ID:zGhUAGhR
リテラルのリストに対する破壊的変更はダメ
っていうのはLand of Lisp(の訳注)で初めて知った
他の本やサイトでこれに関する注意を見た覚えがない

「literal object の変更にあたるから未定義動作になる」(>>969)ということは、リストに限らないんだね

[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]>
0979デフォルトの名無しさん垢版2018/07/11(水) 22:50:38.31ID:nrnWofQI
CLHSで "The consequences are undefined if literal objects are destructively modified." って書いてあるページ
http://www.lispworks.com/documentation/HyperSpec/Body/03_ga.htm

そして、 literal の方には "appearing as data in a quote form" なんて書いてあるので (http://www.lispworks.com/documentation/HyperSpec/Body/26_glo_l.htm#literal)
quote の中身は literal, よって破壊的に変更すると undefined ..?
0980デフォルトの名無しさん垢版2018/07/11(水) 22:59:01.95ID:vOu8ozZx
何故maxには:keyがつかえないの?
定義だから。いや、知ってるけどあってもええやん。
みんなreduceとか使ってやってんの?
0981はちみつ餃子 ◆8X2XSCHEME 垢版2018/07/11(水) 23:38:32.21ID:RBgflsxh
リテラルの破壊が駄目ってのは割と一般的な気がする。
C がそうなってるのを知ってたので、
後に他の言語を学ぶときも意識して仕様をチェックしてる。
0982デフォルトの名無しさん垢版2018/07/12(木) 00:32:56.92ID:bsVrPe++
>>977
SBCLは警告出すということは危険なコードと言うのを認識してコピーを作成してるんでしょ
ちなみにEmacsだとクオートされたリストの書き換えは問題ないからついやってしまうな
0984デフォルトの名無しさん垢版2018/07/12(木) 12:25:48.63ID:l643qOMO
>>973
なるほど、first側にatomかpairかのフラグを入れて、実際のリストの構造はsecond側に入れればいいのか。
ありがとう、この線でやってみる。
レス数が950を超えています。1000を超えると書き込みができなくなります。

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