X



関数型プログラミング言語Haskell Part31©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
0851デフォルトの名無しさん
垢版 |
2018/11/18(日) 07:38:58.15ID:2lh9j78G
if then elseを最近知った位の超初心者です。
(自分の頭以外に)どこが悪いのかわからないので教えていただきたくて投稿します。

kld1 p q = do -- Kullback-Leibler divergence
-- if length p /= length q
-- then return ()
-- else do
let pp = map (/sum(p)) p
qq = map (/sum(q)) q
in sum $ zipWith (\x y -> x * (log x)/(log y)) pp qq
*Main> kld1 [1/2,1/2] [1/4,3/4]
1.4547104198266045
と動作しますが、エラー処理のコメントアウトを外すとコンパイルはできても

kld2 p q = do -- Kullback-Leibler divergence
if length p /= length q
then return ()
else do
let pp = map (/sum(p)) p
qq = map (/sum(q)) q
in sum $ zipWith (\x y -> x * (log x)/(log y)) pp qq

*Main> kld2 [1/2,1/2] [1/4,3/4]

<interactive>:16:1: error:
? No instance for (Floating (m0 ())) arising from a use of ‘it’
? In a stmt of an interactive GHCi command: print it
と返ってきてエラーメッセージの意味すら理解できません。
if ~ elseの部分はどう直せばいいのでしょうか?

モナドも未学習の超初心者ですので、宜しくお願いします(_ _)。
0853デフォルトの名無しさん
垢版 |
2018/11/18(日) 09:57:38.99ID:XromDw/4
>>852
型を合わせるにはどう対処すればいいのかわからないのですが、
とりあえず、これで動きました。

kld p q = do -- Kullback-Leibler divergence
if length p /= length q
then error "Not equal length"
else do
let pp = map (/sum(p)) p
qq = map (/sum(q)) q
in sum $ zipWith (\x y -> x * (log x)/(log y)) pp qq
main = do
print $ kld [1,1] [1,3]
print $ kld [1,1] [1,2,3]
0855デフォルトの名無しさん
垢版 |
2018/11/20(火) 08:29:50.51ID:kos1zZ3I
関数型プログラミングでログ出力ってどうやってるんですか?
例えば一つの関数で3回ログ出力したいときとか、Writerモナドだと関数内でエラーが起きたときとかうまく出力されてないですよね?
0856デフォルトの名無しさん
垢版 |
2018/11/20(火) 10:01:49.03ID:jmuJusIM
flush
0857デフォルトの名無しさん
垢版 |
2018/11/20(火) 10:53:51.88ID:QMY+cuul
Writerでは例外のようなものを投げることができないからもっと万能なモナドを使う
オブジェクト指向にたとえるとObject型
言語にたとえると動的型付け言語のような万能なやつが必要だ
0860デフォルトの名無しさん
垢版 |
2018/11/20(火) 18:07:48.61ID:QMY+cuul
Haskellにも副作用はある
ただ副作用を使えない制約の型が多くて型チェックが厳しいだけ
0861デフォルトの名無しさん
垢版 |
2018/11/20(火) 18:35:37.40ID:kZ/DcFbd
>>855
そんな大それたもの作らないから使った事ないけど、ErrorTとか言うのがControl.Monad.Errorに入ってるっぽい。
何れにしても、本格的な開発するならRWHは持っておいた方が良い。
0864デフォルトの名無しさん
垢版 |
2018/11/24(土) 13:06:50.85ID:4kdGLnPd
直交
0865863
垢版 |
2018/11/24(土) 13:10:25.20ID:dO0ZWwxC
例えば、こんな書き勝たされてるんだけど

P19の一番下に
A conditional expression has the form if e1 then e2 else e3 and returns the value of e2
if the value of e1 is True, e3 if e1 is False, and ⊥ otherwise.

”⊥ otherwise”って何だろう?
0867デフォルトの名無しさん
垢版 |
2018/11/24(土) 13:24:01.18ID:dO0ZWwxC
ええええ 本当に直交って意味なの?

数学なら意味は分かるが(関数解析も入門とか初歩レベルなら読んだ)
プログラミング言語で直交ってどう意味?
0868デフォルトの名無しさん
垢版 |
2018/11/24(土) 13:28:15.64ID:4kdGLnPd
独立
0870デフォルトの名無しさん
垢版 |
2018/11/24(土) 13:43:43.78ID:dO0ZWwxC
>>869
Thx ようやくまともな答えが

Haskellやってて面白いのが、新しい概念が増えていくのがうれしい 遅延評価とか
0871デフォルトの名無しさん
垢版 |
2018/11/24(土) 13:59:53.00ID:1C+vWWG1
>>863
使わない値(_)や、未定義の値や型として使われてるね。
文脈から意味を汲み取るしか無い。
0873デフォルトの名無しさん
垢版 |
2018/11/24(土) 14:15:54.52ID:1C+vWWG1
take undefined [] = undefined ― 入力待ち(Carl + Cで強制終了必須)
take 0 undefined = []

⊥をundefined = undefinedと定義してghci で試したとしても、プログラミングHaskellの説明と同じ動きをする。
0874デフォルトの名無しさん
垢版 |
2018/11/25(日) 11:21:25.73ID:gET8Juo7
undef :: b -> a
undef ined = undef ined

これが ⊥ -> a とか () -> a とか () -> ⊥ とかになるせいで
⊥と()を区別する意味がわからなくなる
再帰禁止すれば違いがわかる
0875デフォルトの名無しさん
垢版 |
2018/12/03(月) 16:13:07.05
Haskell では明示的に instance 宣言しなければ、ある class の要件を充たしていることをコンパイラが認識してくれません
Go ではインターフェイスの要件を充たしていれば明示的に宣言しなくても型システムがコンパイル時に暗黙的に推論してくれるそうです(日記帳)
0877デフォルトの名無しさん
垢版 |
2018/12/11(火) 10:40:31.76ID:w4wbcBCq
bsort [] = []
bsort xs = bsort' [] xs
where bsort' [] [] = []
bsort' xs [y] = y:bsort' [] xs
bsort' xs (x:y:zs) | x <= y = bsort' (y:xs) (x:zs)
bsort' xs (x:y:zs) = bsort' (x:xs) (y:zs)

バブルソートのつもり。。。
バブルと言うより勝ち抜きソートって感じだけど。
アルゴリズム図鑑アプリで動作見ながら、リストは頭からだから交換はコストかかるんでこんな形になった。
0878デフォルトの名無しさん
垢版 |
2018/12/11(火) 10:48:30.82ID:w4wbcBCq
動作はこんな感じ。
bsort [3,5,2,4,1]
= bsort' [] [3,5,2,4,1]
= bsort' [5] [3,2,4,1]
= bsort' [3,5] [2,4,1]
= bsort' [4,3,5] [2,1]
= bsort' [2,4,3,5] [1]
= 1:bsort' [] [2,4,3,5]
= 1:bsort [4] [2,3,5]
= 1:bsort' [3,4] [2,5]
= 1:bsort' [5,3,4] [2]
= 1:2:bsort' [] [5,3,4]
= 1:2:bsort' [5] [3,4]
= 1:2:bsort' [4,5] [3]
= 1:2:3:bsort' [] [4,5]
= 1:2:3:bsort' [5] [4]
= 1:2:3:4:bsort [] [5]
= 1:2:3:4:5:bsort' [] []
= 1:2:3:4:5:[]
= [1,2,3,4,5]

最小値が一番最後の唯一つの要素になったらソート済みリストに追加して、
溜め込んだ最小値以外のリストを復帰させて残りのソートを続ける。
(ので、xsとysで見れば浮かび上がる様に見える(?)
0880デフォルトの名無しさん
垢版 |
2018/12/11(火) 13:48:28.37ID:w4wbcBCq
[a] -> [b]な再帰関数はスタック消費しないよ。
0882デフォルトの名無しさん
垢版 |
2018/12/18(火) 11:44:17.44ID:/M0/bFGF
歯透ける
0884デフォルトの名無しさん
垢版 |
2018/12/18(火) 14:51:09.99ID:LIt8HoLP
>>880
Haskellよくわかってないんですが、
y:bsort' [] xs
の部分も末尾再帰でなくともスタック消費しないんですか?
0886デフォルトの名無しさん
垢版 |
2018/12/19(水) 09:01:32.80ID:xYxnZ8u2
最適化って言うけど最適化無しのddump-asmでもあんまりcallは使われてないんだよね
詳しくは知らないけど再帰と言えど少なくともWHNFで値を返すわけだから
サンクに入った再帰呼び出しを実際に再帰的に呼ぶ必要も無いってことだろう
つまり実際の呼び出しに評価元のスタックが使われるんだとしたら
リストを評価する場合には伸びだ分のスタックがコンスセル毎にクリアされる
0889デフォルトの名無しさん
垢版 |
2018/12/21(金) 00:03:36.39ID:1VggrQKb
bsort = unfoldr (uncons . foldr step [])
where step x [] = [x]
step x (y:ys) | x <= y = (x:y:ys)
| otherwise = (y:x:ys)
0890デフォルトの名無しさん
垢版 |
2018/12/21(金) 13:18:39.50ID:V4JbVdgQ
スタックマシンじゃなくてセルオートマトンだったらスタック消費しないよね
0891デフォルトの名無しさん
垢版 |
2018/12/22(土) 08:09:42.23ID:9xYrH7YE
Prelude.div関数について。

Preludeモジュールをインポートしないで同義の関数を使いたい場合、
どのモジュールをインポートするのが理にかなっているでしょうか。

理にかなっていると言うのは、
import X (div)
という記述を見て「整数の商を求めるのだな」とか、
「数学的な計算の意味での div なんだな」と分かるという意味です。
import Prelude (div)
では意味が分かりません。
(正確には長年Haskell使ってるので意味は分かるが気持ち悪い)

できるだけ役割がハッキリして仕事が限定された小さなモジュールを求めています。
また stackage の中でお願いします。

basement の Basement.Numerical.Multiplicative.div が良い感じですが、
もっと良いものはあるでしょうか。
0893デフォルトの名無しさん
垢版 |
2018/12/22(土) 10:39:40.85
   ミ    /、`二//-‐''"´::l|::l       l! ';!u ';/:::l ', ';::::::l ';:::::i:::::
    ニ    レ/::/ /:イ:\/l:l l::l   u   !. l / ';:::l ', ';:::::l. ';::::l:::::
     マ     レ  /:l l:::::lヽ|l l:l し      !/  ';:l,、-‐、::::l ';::::l::::
    リ       /::l l:::::l  l\l      ヽ-'  / ';!-ー 、';::ト、';::::l:::
    ス        /::::l/l::::lニ‐-、``        / /;;;;;;;;;;;;;ヽ!   i::::l:::
    ト       /i::/  l::l;;;;;ヽ \             i;;;;;;;;;;;;;;;;;;;l   l::l:::
        /:::l/:l /;;l:!;;;;;;;;;',               ';;;;;;;;;;;;;;;;;ノ    l:l::
         /::::;ィ::l. l;;;;!;;;;;;;;;;;l            `‐--‐'´.....:::::::::!l
   __|_ ヽヽ   /イ//l::l ヽ、;;;;;;;ノ....      し   :::::::::::::::::::::ヽ /!リ l
    | ー      /::::l';!::::::::::::::::::::  u               ', i ノ l
    | ヽー     /イ';::l          ’         し u.  i l  l
     |       /';:';:!,.イ   し    入               l l U
     |      /,、-'´/ し      /  ヽ、   u    し ,' ,'  l
     |        /l し     _,.ノ     `フ"       ,' ,'  ,ィ::/:
     |       /::::::ヽ       ヽ    /     し ,' ,' / l::
     |      /::::::::::::`‐、 し      ',  /    u   ,、-'´  l,、-
     |      ``‐-、._::::::::::` ‐ 、     ',/       , -'´`'´ ,-'´
     |      _,、-‐'"´';:::::::::イ:l';:::` ‐ 、._____,、-‐'"´  u /
   | | | |    \ l::/ l::::::/リ ';:::::lリ:::::l';:::l l:l:::::l\  u /
   | | | |
0894デフォルトの名無しさん
垢版 |
2018/12/22(土) 11:38:44.98ID:SGb2VOwM
>>891
その「気持ち悪い」の方がよっぽど意味不明なんだから
divの意味が分からないくらい許してやれよ
0895デフォルトの名無しさん
垢版 |
2018/12/22(土) 15:07:06.49ID:j3oO0IK0
>>891
気持ちわかる。import Data.Integral (div) くらいでやりたいよね。
import Prelude (Integral(div)) はどうかな
0896デフォルトの名無しさん
垢版 |
2018/12/23(日) 00:20:58.06ID:OufBT+Yp
>>875
公称的部分型(ノミナルサブタイピング)
構造的部分型(ストラクチャルサブタイピング)
0897デフォルトの名無しさん
垢版 |
2018/12/23(日) 00:50:21.75ID:2lSG181k
型推論って、いったい何を目指してるの?
コンパイラは推論できても、人間にとって読みやすいものと思えないんだけど
0900デフォルトの名無しさん
垢版 |
2018/12/23(日) 16:02:25.42ID:dHWagv9n
Practical Web Development with Haskellってのがまだ70Pくらいしか読んでないけど
認証つきWebアプリをいちから写経しようぜってつくりで初〜中級者にいい感じっぽい
Data.Hasとかこれで初めて知ったわ
0901デフォルトの名無しさん
垢版 |
2018/12/23(日) 19:07:09.70ID:VkAdoKxx
>>894
気持ち悪いは言い過ぎでした。
あまりハッピーではない、くらいです。

>>895
Integral で意味は分かるでしょ、という事ですね。

探すよりそれが楽で現実的だとは私も思うのですが、
Prelude から取ってくるのは何かこう目的と違うと言うか、
それで妥協するのがちょっと悔しいです。
(Prelude って OOP でクラスを ~Manager とか ~Utility って命名する感がある)

でもアドバイスは有り難いです。
参考にさせてもらいます。
0902デフォルトの名無しさん
垢版 |
2018/12/23(日) 19:28:31.47ID:14edUGfJ
Preludeなんてものは要らなくて、divはData.integralに入ってて、divを使うには毎回Data.Integralからimportするのが理想って認識で合ってる?
Preludeのその他諸々の関数も含めて
0903デフォルトの名無しさん
垢版 |
2018/12/23(日) 20:21:12.14ID:YigQT2JG
LinuxにたとえるとデフォルトのGUIなんてものは要らなくて
無数のディストリビューションから選択するのが理想という認識
0906デフォルトの名無しさん
垢版 |
2018/12/24(月) 18:43:23.42ID:ovQS6rqM
うわああああこの前Amazon.comから輸入したHaskellの洋書Amazon.co.jpでも売ってたああああ
失敗した
0907デフォルトの名無しさん
垢版 |
2018/12/24(月) 20:36:56.95ID:OvWyYJqn
当初から比べたらco.jpの洋書の品揃えはずいぶん充実したよね
アカウントを未だ両方持っているけど米版は使わなくなった
0908デフォルトの名無しさん
垢版 |
2018/12/25(火) 11:18:00.52ID:yeWprDEr
洋書なら輸入の方が安いって話では
0909デフォルトの名無しさん
垢版 |
2018/12/25(火) 12:11:51.62ID:3tfaERbL
専門書だと、各地域のamazonで送料込みでも一万円近く違ったりするから
確認はしてる。ごく稀にamazon.co.jpが破格になることもあるけど。
haskell関連だと
Computational Oriented Matroids: Equivalence Classes of Matrices within a Natural Framework
Juergen G. Bokowski
をco.jpで2800円で購入してた。他だと1万円超え。いまもco.jpでセールになって5700円で買えるみたい。
なお、haskellの学習にはなんの役にも立たないので、その分野の数学をやりたい場合だけ買ってね。
0912デフォルトの名無しさん
垢版 |
2018/12/28(金) 21:49:01.05ID:Wkr1Do53
なんか、Haskellなかなか理解進まない

今は、遅延評価あたりをwebで探して読んでるんだけど、
ここら辺のいい日本語の本無いですか?

キーワードは
遅延評価、サンク、ラムダ式、簡約(出来ればグラフ簡約もあれば)当たりが載ってれば
あとは、コンビネータとかもあるとうれしい

情報系の教科書でも、Haskellの教科書でもどちらも大歓迎
0913 ◆QZaw55cn4c
垢版 |
2018/12/28(金) 21:53:15.13ID:8AWKvvCO
>>911
エビリファイなんて飴玉ですよ…
私はセレネース(ハロペリドール)とベゲタミンでなんとか生きています…
https://ameblo.jp/kyupin/entry-10102907726.html
「ベゲタミンAおよびBは神の薬で、あれを思いついた人はたぶん天才だと思う。あれは合剤だから神なのであって、あの成分をバラバラに処方すると、なぜかベゲタミンほどは効かない。まぁいずれにせよ絶妙な組み合わせなのだろう。」
0916 ◆QZaw55cn4c
垢版 |
2018/12/29(土) 00:32:49.36ID:lsgoHDjS
>>914
これらより強力な薬はいろいろ見聞きする限りではないようですね…
0917デフォルトの名無しさん
垢版 |
2018/12/29(土) 02:03:55.74ID:Btke7xay
何が目的で何がわからないかわからないとググって出てきたページ読めくらいしか言えない
0919デフォルトの名無しさん
垢版 |
2018/12/29(土) 08:40:48.37ID:+cssvHV/
>>911
この人、技術的にはなんか凄腕っぽくてフォローしてたけど、こんな人だったんか……(困惑)
0921デフォルトの名無しさん
垢版 |
2018/12/29(土) 11:49:29.33ID:um1nA50l
>>915
うんにゃ 一番知りたいのは レスポンス周り
ちょっと、混乱中なのでうまく書けないんだけど

例えば、サンクってどういうルールで作られるとか どういうルールでつぶされていくのかとか
(単純な四則演算だけど括弧付きがあった場合と 2*2*(3+4)のサンクのの適用法は?最左最外簡約との関係は?)
遅延評価では、必要なところまで評価と書かれているけど、WHNFとそれは一致するのか
(WHNFの中でλ式が出てくるところまでとあるけど、それは式の評価の必要なところなの?)
正直いうと、プリミティブも曖昧なイメージはあるけど、正確には分かっていない。多分組み込み的な型とか演算子、関数だよねw

Webで得られるのは、どうしても断片的な知識になるんで、個々の知識が繋がりづらいのと、
あとはちょっと信頼性が落ちてたりする(初心者には間違いが分かりづらい)
ある程度知識がしっかりしてる人には、内容の真偽を含めそれで十分なのかもしれないけど
0922 ◆QZaw55cn4c
垢版 |
2018/12/29(土) 12:04:31.84ID:lsgoHDjS
>>918
「殺人予告」と「殺人予告まがい」とは違うものですよね…
0924デフォルトの名無しさん
垢版 |
2018/12/29(土) 12:54:03.27ID:EK4sWEwk
>>919
ほんそれ
0925デフォルトの名無しさん
垢版 |
2018/12/29(土) 13:00:10.35ID:um1nA50l
>言語ごとの構文解析ちゃんと調べればいいんじゃないかな
構文解析という言葉になじみが無いんですが
Haskellの場合具体的に何をすればいいですか?
(情報系の教育は受けてないんで ただ、これからそっち系を漁ろうとはしているけど)


SICPは多分自分の好物w 読みたい候補に入れとく
0926デフォルトの名無しさん
垢版 |
2018/12/29(土) 13:48:17.43ID:0jIQbIRd
形式的なのはhaskell language reportってのがあるけど
ボトム(undefinedとか)の扱いが定義されてるだけでサンクの項目は無いね
ボトムの定義としては評価してみないと区別できないってことだから
これを関数に渡してもエラーにしないって感じで評価方法が規定されてる
0927デフォルトの名無しさん
垢版 |
2018/12/29(土) 14:32:03.91ID:Btke7xay
基本的な知識なしに局所的に理解しようとするからわからないんでしょ
数冊テキスト読んでるうちにたいていの疑問は消える
0929デフォルトの名無しさん
垢版 |
2018/12/29(土) 16:29:44.50ID:um1nA50l
取りあえず、>>912の質問の回答してくれてありがとう >> 回答者

>>928 それの日本語版頂戴w は冗談として

Haskell本って遅延評価はあんまり書かれていないのかな
サンクとかそれなりに書かれていてもいいと思うけど

とはいえ、もうちょっと具体的な質問が出来るよう出直してきます
0931デフォルトの名無しさん
垢版 |
2018/12/29(土) 17:36:10.57ID:FOaDygsP
遅延評価は並列処理を学ぶときにちょろっと深くやるくらいな印象
Haskellにおける並列実行 - 純粋関数型魔境 http://amothic.hatenablog.jp/entry/2013/10/09/220004
『Haskellによる並列・並行プログラミング』の中で
この記事の前半部分をもうちょっと詳しく書いてるけど
それでも10ページ未満くらいの分量
0932デフォルトの名無しさん
垢版 |
2018/12/31(月) 00:40:09.80ID:eNA22sUO
参照カウントを除けばGCのアルゴリズムはみんなメモリ解放を遅延しているという事実
のせいでC++のようなGC無し言語の支持率が異常に高い
0934デフォルトの名無しさん
垢版 |
2018/12/31(月) 20:24:52.37ID:/+DS/TZA
>>910
「公開されてないモジュール」というのがあるんだ…
stackageから探せなくて、 GHC.Real のように https://hackage.haskell.org/package/base-4.12.0.0
でリンクなしになってるモジュール。これらは一体どういうものなの? どうやって作る?

外部から使いたいモジュールは、cabal ファイルの exposed-modules セクションに並べる。
テストなどのために外から使いたいが、あまり使って欲しくないものをInternalモジュール配下に。
使用を禁止したいものは exposed-modules から外す。
モジュールの公開はその三択だと思ってた。
0937デフォルトの名無しさん
垢版 |
2019/01/01(火) 17:19:58.78ID:7ZW7L+dS
HRR(Haskell relational record)で遊んでるんだけど、
ポスグレのreturning○○に対応したinsert文を生成する機能てないかな?
オートインクリメントある表とかはべたにクエリ書いたほうが楽に感じてしまう
0938デフォルトの名無しさん
垢版 |
2019/01/05(土) 19:51:01.28ID:iNZzFN2I
Javaでいえばルール付きインターフェイスがHaskellのモナドという理解でOK?
実装時インターフェイスよりちょっと守るべきルールと性質が多いのがモナド。
型はJavaでいえば複数のインターフェイスを継承できる感じでいいですか?
0940デフォルトの名無しさん
垢版 |
2019/01/05(土) 22:45:17.04
モナドは単なる自己関手の圏におけるモノイド対象だよおじさん「モナドは単なる自己関手の圏におけるモノイド対象だよ」
0941デフォルトの名無しさん
垢版 |
2019/01/06(日) 00:04:04.86ID:13gMXODg
Javaのクラスやインターフェイスは
メソッドの定義を変えられるがメソッドの型は変わらない
例えばObjectクラスのメソッドの定義を変えてもメソッドの型が変わらないので
型チェックが甘い

Haskellのクラスはメソッドの型も変わる
0943デフォルトの名無しさん
垢版 |
2019/01/06(日) 20:47:40.51ID:8Nv8H8lo
「where」の日本語読みに関してだけど
「左記の名前(モジュール名/クラス名/インスタンス名/関数名)が
示す物の中では以下の定義が行われています。」
て言う読み方でいいの?

英語の関係福祉 where の「〜する所の」と同じ意味でいいのかどうか。
0945デフォルトの名無しさん
垢版 |
2019/01/07(月) 06:30:03.04ID:Tzw/TAIJ
>>943
haskell の where は数学の教科書なんかに同じ使い方で普通に出てくる。
というか、haskell が数学から借りてきた。

難しく考えないで、自然に

f = g x where x = ...

f は g x と定義される。
「なお、ここで x は ... である」

みたいに読めばいい。
0947デフォルトの名無しさん
垢版 |
2019/01/08(火) 00:20:15.62ID:t9mDJmjK
数学の教科書・・?
0948デフォルトの名無しさん
垢版 |
2019/01/08(火) 11:30:51.32ID:GKZx39y6
SQLか
0949デフォルトの名無しさん
垢版 |
2019/01/08(火) 11:56:51.91ID:ZgpKo6ms
>>947
ごめん、何が ? なのか分からないんだが。
ぼかさず具体的に質問してくれると助かる。

教科書とか参考書とか読み物とかでよく見るよ。
例えば、Haskell に関係ありそうなのだと、
Steve Awodey 著 Category Theory Second Edition の 15~16 ページ目とか。

-----[ 引用 ]-----
The arrow category C-> of a category C has the arrows of C as objects,
and an arrow g from f : A -> B to f' : A' -> B' in C-> is a "commutative square"
(ここに図があり、g1 と g2 が出てくる)
where g1 and g2 are arrows in C.
-----
0950デフォルトの名無しさん
垢版 |
2019/01/09(水) 03:54:07.58ID:bacokaDQ
フォルダの中身を列挙再帰するのって1回で1階層しか見れなくてIOモナドぶっかけられるから
1関数の中のwhereの中で回すしかない感じですかね?
レス数が950を超えています。1000を超えると書き込みができなくなります。

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