関数型プログラミング言語Haskell Part33

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/02/10(月) 18:17:36.49ID:L6eYQqyh
関数型プログラミング言語 Haskell について語るスレです。

Haskell Language(公式サイト)
https://www.haskell.org/
日本Haskellユーザーグループ - Haskell-jp
https://haskell.jp/

前スレ
関数型プログラミング言語Haskell Part32
https://mevius.5ch.net/test/read.cgi/tech/1548720347/
2020/04/15(水) 17:46:40.69ID:/WUIZ9Nz
>>211
39の素因数って3,13よね?
√39が6くらいだから探索区間は√mじゃ不十分かなって
でも確かに偶数はいらないから2:[3,5..]でいいね
全部の素因数のリスト作るのに全部掛け合わせて処理はひどいなと見直して思った
リストは早くするなら使わない方針なのね

Quatremとリスト以外(sequenceが代替?)調べて組み込んでみようかな
2020/04/15(水) 17:47:28.61ID:/WUIZ9Nz
お礼書き忘れたすみません
回答ありがとうございますなんとか通ってもらいます
2020/04/15(水) 19:54:09.51ID:JKZ0KcR7
>>216
なんの話かよく知らないけど39を素因数分解してるのなら、
約数として3が見つかったら、その時点でもう39が素数じゃないことが判明するから、13を調べる必要ないよ
√39以下の数字調べればオッケー
2020/04/15(水) 19:55:22.34ID:JKZ0KcR7
間違えた
「素因数分解してるのなら」じゃなくて「素数判定してるのなら」だった
2020/04/16(木) 01:02:59.81ID:6p+dWGIK
>>208
計算速度や使用メモリ量以前に、解が正しくないよ。
試しに sumOfDivided [8] やってみ。

もう少し言うと、prime_factors 関数がおかしい。
関数名に相応しくない計算をしていられる。

まずは、必要な個数の正しい素数列を作ることを考えた方がいいと思うぞ。
2020/04/16(木) 01:13:24.21
>>216
あ、説明で嘘を吐いてしまった。確かに√m以降に素因数は存在しないは偽だった
それでも尚、√で打ち切っていい手筋は揺るがない。
√39より前の3を発見して、39 `quot` 3 (=13) に対して再帰的に同じことをする
ただし割ることを試すのは今割り切れた素数からね(同じ素数で複数回われることもある)。
もう一回3で割ろうとして失敗し、次は√13 を超えるので打ち切って、13 は素数と判定してリストに加える
だから結果として、√m 以降の素因数を取りこぼすことはない
2020/04/16(木) 09:43:04.65ID:xRrLSzP4
>>221
素数系のアルゴリズムは手続き的にはよく知られたものが色々あるけど
それをHaskellっぽく(宣言的に)定義しろって言われると割と悩む
STMonadとか使えば手続き的な実装はできるけど何かに負けた気分になる
2020/04/16(木) 12:23:07.85ID:DtoAMVDb
速度あげようと思ったら、どうのように計算するかということに介入する必要があるから手続き的になるのはしょうがないのでは
2020/04/16(木) 14:44:08.63ID:ta7mONc0
魔法を使える主人公がなぜか銃を乱射するというマナー違反
を許せない真面目系脇役の魅力
2020/04/17(金) 17:52:04.90
騎士道はCで書くなど、汚い真似をして勝つことを認めていない
2020/04/17(金) 18:51:48.64ID:Tw57yEwr
ごきげんよう、高貴なるhaskellプログラマの皆様方
今日も可憐におプログラミングですことよ
ほほほ
2020/04/17(金) 23:16:02.21ID:kOeZUqy9
haskellマスターすると新型コロナにかからないってよ
2020/04/18(土) 03:43:48.65ID:ehKqAcW4
コロナ菌に強い言語なん?
2020/04/18(土) 11:31:33.48ID:v8V9P+IO
C言語プログラムなどを実行すると電磁波の影響で身体への副作用が発生するからな
副作用を抑え人間本来の自然な免疫力を高めるのがhaskell
2020/04/18(土) 12:26:02.03ID:kkncOpcu
haskellマスターで彼女ができました!
2020/04/18(土) 13:41:19.98ID:urv0mT/N
>>229
我慢できずにモナドに手を出して感染する事例が後を立たない
モナドは自粛すべきと何度も言われているのに
屁理屈をこねて手を出す者が多すぎる

本当にHaskellに副作用がないのだと詭弁を弄せずごり押しするのならば
絶対にモナドをやるべきではないと言われている
232デフォルトの名無しさん
垢版 |
2020/04/18(土) 19:32:57.82ID:DCiZBX2v
モナドを「やる」ってなんだよw
モナドを禁止薬物か何かと勘違いしてるのか?

すべての人間は二分される
すなわち「モナドである」人間と、そうでない人間、だ
俺はモナド
お前はモナドではない

「上」で待ってるで
2020/04/18(土) 20:20:58.00ID:aIlZnP1D
おれモナド使いだけど、おまえ俺に使われてんのか
2020/04/18(土) 20:52:26.11
C言語プログラムなどを実行するとストレスの影響で毛髪への副作用が発生するからな
脱毛を抑え人間本来の自然な論理を書けるのがhaskell
2020/04/18(土) 22:32:39.62ID:DCiZBX2v
>>233
モナドに使われてるやつほど、自分はモナドを使ってると勘違いするよなw
2020/04/18(土) 23:24:30.65ID:jMxNMUbH
モナドを使う時、モナドもまたあなたを使っているのだ
237デフォルトの名無しさん
垢版 |
2020/04/19(日) 01:35:32.46ID:WM8Q0HWB
[状態モナド](https://wiki.haskell.org/State_Monad)を
[随伴](https://en.wikipedia.org/wiki/Adjoint_functors) on Rails
に乗せてみる。

``` code
type W x a b = (a, x) -> (b, x)
type S x a b = a -> x -> (b, x)

in_away :: W x c d -> W x b c -> W x a b -> W x a d
in_away cd bc ab = cd . bc . ab

in_home :: S x c d -> S x b c -> S x a b -> S x a d
-- in_home cd bc ab = to_home $ in_away (to_away cd) (to_away bc) (to_away ab) where
-- in_home cd bc ab = ext cd . ext bc . ab where
in_home cd bc ab a = new a %>>=% ab %>>=% bc %>>=% cd where
(%>>=%) = flip ext
ext = to_home_fmap . to_away
new = to_home id
to_home_fmap = (.)
to_home = curry
to_away = uncurry
```

`to_home`が[記事](https://en.wikipedia.org/wiki/Adjoint_functors)での`Phi`
に、`ext`が[Kleisliのスター](https://en.wikipedia.org/wiki/Kleisli_category)
に対応する。`in_away`は通常の関数の合成で、`in_home`はそれを黒魔術に
翻訳している。
[継続モナド](https://wiki.haskell.org/Continuation)も随伴で書ける。
238デフォルトの名無しさん
垢版 |
2020/04/19(日) 01:36:44.08ID:WM8Q0HWB
``` code
type O x a b = (b -> x) -> a -> x
type C x a b = a -> (b -> x) -> x

in_away :: O x c d -> O x b c -> O x a b -> O x a d
in_away cd bc ab = cd %.% bc %.% ab where (%.%) = flip (.)

in_home :: C x c d -> C x b c -> C x a b -> C x a d
-- in_home cd bc ab = to_home $ in_away (to_away cd) (to_away bc) (to_away ab) where
-- in_home cd bc ab = ext cd . ext bc . ab where
in_home cd bc ab a = new a %>>=% ab %>>=% bc %>>=% cd where
(%>>=%) = flip ext
ext = to_home_fmap . to_away
new = to_home id
to_home_fmap = flip (.)
to_home = flip
to_away = flip
```

厳密には、`flip`は随伴ではないが、`Set^op (a, b)`と`Set (b, a)`が集合
として同型になることを使うと、実質的な随伴の役割を果たす。
2020/04/19(日) 23:13:07.04ID:hRJ8C0Os
その話題は伸びない。このスレにはHaskellerいないからコード貼ったって誰も読めないし圏論を理解してるやつなんかいないから
2020/04/20(月) 03:13:59.48
Haskeller 戻ってきて
2020/04/20(月) 04:21:55.04ID:VYi0JRSU
エアプしかいないの?
2020/04/20(月) 12:33:40.11ID:KoBCLV49
ここには数学とプログラミング両方できる人がいるようだからお聞きしたいのだけど
プログラミングのクロージャーってトポロジーのクロージャーから引っ張ってきた用語なの?トポロジーの方の定義を眺めてみてもイマイチつながりが理解出来なくて
2020/04/20(月) 12:39:30.50ID:PYrLoVAx
まったく別
244デフォルトの名無しさん
垢版 |
2020/04/20(月) 12:40:47.15ID:gGVXVDIS
量子化とかもおいおいって思う
2020/04/20(月) 13:57:45.52ID:a2Vdb5nD
全く別なんすね

ありがとうございます
2020/04/20(月) 21:31:54.79ID:CMTCfm7W
別でもあるし同じでもある
具体的には
2020/04/21(火) 00:24:43.90ID:dIhpNk/e
量化子を量子化!
2020/04/21(火) 01:33:16.33ID:iOWmjrKd
そう言えば、佐野量子化って子もいたな
2020/04/21(火) 21:16:16.93ID:JxCMv4cD
この言語って純粋に理論的な側面に興味を感じてしまって、アプリ制作進まなくなるわ
2020/04/23(木) 00:29:18.48ID:wNzYQ5IM
それよりメモリ管理の理論に興味を感じないか
static変数のようなものを使えばメモリ管理と無縁のアプリ製作ができるのだが
2020/04/23(木) 02:23:16.94ID:mBUbZ8gm
何を言ってるんだ
2020/04/23(木) 03:15:59.03
メモリ管理に興味を感じないか? → メモリ管理と無縁の〜ができるのだ

??????
メモリ管理するんじゃなかったのか?
2020/04/23(木) 07:00:20.01ID:eoS2PMe8
staticおじさん来てんね
2020/04/23(木) 13:10:01.98ID:rjrgI3oq
10年以上前から同じ会話してるだろ
免疫がつくまで繰り返すんだぜこれ
2020/04/23(木) 21:43:23.72
Haskellスレって荒らされてるの?
2020/04/23(木) 22:27:14.34ID:mBUbZ8gm
これが平常運転
257デフォルトの名無しさん
垢版 |
2020/04/24(金) 01:31:48.04ID:Zatb8XkV
低俗なねらーにはHaskellはら難しすぎたんや…
2020/04/24(金) 23:19:15.10ID:FUZNUOcv
メモリ管理の様な世俗的な因習に捕らわれず神の領域を安らかたらしめん為の関数型言語では無かったか
2020/04/25(土) 01:04:25.27ID:7jpIjPuc
現実のハスケラ達は評価順やサンク潰しの制御のテクニックを競ってマウンティングし合ってるよ
2020/04/25(土) 01:48:47.32ID:n1+IBCwB
くだらない事をダベってるくらいなら、Polysemyの基礎でも勉強してろ
https://sir4ur0n.github.io/
2020/04/25(土) 04:06:57.78
それを知るとどんな良い事があるのか、学習の動機づけをください
2020/04/25(土) 05:14:26.69ID:n1+IBCwB
簡単に言えば、安全で明確でテストしやすいプログラムが書ける。

IOモナドの関数は中でどんなIOアクションでもできてしまい危険だ。
大事なファイルを上書きしようが、大音量でビープを鳴らそうが。
Polysemyに代表されるエフェクトシステムを使うと、
関数の中で使えるIOアクションの内容を関数シグネチャで制限できる。
ファイル読取アクションを宣言した関数の中では、書込や画像表示など他のIOアクションは一切できず安全だ。

また、ビジネスロジックのコードではどんなアクションをするのか(what)というレシピだけを書き、
そのアクションを実際のIOを使ってどの様に実現するか(how)は別のコードで書くことになる。
whatとhowがしっかり分かれ明確だ。

なので、ビジネスロジックのコードは純粋関数で書け、テストしやすくなる。
howのコードだけをモックに変えることもでき、これもまたテストを容易にする。

と言うようなことを例を交えて分かりやすく説明しているのが >>260 の記事だ。
2020/04/25(土) 08:08:07.66
目を通しました(理解できたとは言ってない)
粒度の粗い物を制限してもっと細かくして、その組み合わせで書き直すことで間違いを排除する、
(手を入れられない)既存ライブラリに対して、ぼくのかんがえたさいきょうのリファクタリングをエミュレートする基盤となるものですか?
2020/04/25(土) 10:58:51.70ID:n1+IBCwB
>>263
前半はその通り。

が、すまん、後半は意味が分からない。
リファクタリングをエミュレートするってどういう事?
初めて聞いたフレーズだ。

リファクタリングをする事と、リファクタリングをエミュレートする事の違いを教えてくれ。
2020/04/25(土) 12:04:03.93
真のリファクタリングは、設計しなおしてソースコードも書き直す事が含まれるとすると
標準ライブラリであるIOモナドの設計やソースコードを直接弄ることはできませんから、ポリ蝉版は本当にIOを再設計したわけではなく、
リファクタリングを疑似的に再現したという解釈はできないでしょうか
リファクタリングの真似事なのでエミュレートと言いました
2020/04/25(土) 12:44:25.69ID:d+Khct7b
現実問題として純粋関数だけじゃ成り立たないからね
2020/04/25(土) 13:20:46.87ID:n1+IBCwB
>>265
なんか、私と貴方の間にリファクタリングという言葉に齟齬があるような・・・

今までIOモナドを直接使っていたコードをPolysemyを使うようにリファクタリングすることはできるよ。
エフェクトシステムの設計者たちはそれを推奨している。

でもそれは、IOライブラリのコードが弄れないから、仕方ないので、Polysemyで擬似的に弄ったように見せましょう、
という話では全くないよ。
2020/04/25(土) 17:18:59.24ID:zjFjVVvP
Polysemyってはじめてきいた
Extensible effectsとは別もの?
2020/04/25(土) 18:29:06.56ID:n1+IBCwB
>>268
名前が違うんだし、そりゃ別物だよ。
同じエフェクトシステムというカテゴリの一員ではあるが。

どう違うかは >>260 を読んで判断してくれ。
短い記事だからすぐ読める。
270デフォルトの名無しさん
垢版 |
2020/04/26(日) 08:52:10.51ID:K9Hk9jTV
IOは副作用じゃなくて作用だからハスケルは副作用が無いんだなんていってるやつ初めて見たんだけど
2020/04/26(日) 09:58:35.47ID:igL2TSix
あらかじめ宣言した型に従う作用じゃなくて
宣言していないことを勝手にやるのが副作用の弊害だから
Haskellにはこの弊害が無いんだな
2020/04/26(日) 10:22:30.54ID:FBxVgLTh
>>271
そう言うこと。

でもIOは実質なんでもできちゃうから、かなり不安だよね。
もっとeffectを安全に取り扱いたいよね。
その解のひとつがPolysemyだよ、という話しだ。


>>270
PolysemyのブログPart1を読んで思うところがその嘲笑だけなら、
英語ドキュメントの読解にはちょっと向かないかな。
273デフォルトの名無しさん
垢版 |
2020/04/26(日) 11:39:57.10ID:K9Hk9jTV
ブログを観る限り素人の書いたクソ記事だな
読む価値なし
2020/04/26(日) 14:00:45.22ID:igL2TSix
この毒舌が日本の平常運転
2020/04/26(日) 14:32:48.40ID:jQbFLCNe
Haskellの玄人って研究者とか?
2020/04/26(日) 17:02:22.77ID:i7pDRaTP
このスレ住人のことだよ
2020/04/27(月) 14:12:58.96ID:AM55pzUu
「Prelude>:browse」の実行結果をテキストファイルにリダイレクトする方法
browse.hsという名前のファイルに:browseを記入して保存
保存したファイルのあるディレクトリでコマンドプロンプトを立ち上げて以下を実行
stack ghci < browse.hs > browse.txt

Redirecting Haskell GHCi output to text file [duplicate]
https://stackoverflow.com/questions/14688119/redirecting-haskell-ghci-output-to-text-file
278デフォルトの名無しさん
垢版 |
2020/04/27(月) 17:47:14.78ID:AOepTdHn
このスレで延々と副作用やモナドの話ばかりされてるのなんか既視感があると思ったら、物理学板の相対論スレでポアンカレ群やリーマン幾何の話は一切せず
モノの本で読んだようなマイケルソン・モーレイの実験の話に関する持論をひたすら展開して相対論は間違ってる!って騒いでる連中に似てる
279デフォルトの名無しさん
垢版 |
2020/04/27(月) 17:48:43.80ID:l27UEbbh
相対性理論も量子力学もどっちも間違ってる
2020/04/27(月) 18:04:41.79ID:3bdWQ9Vo
まあ副作用やモナドに関する理解の甘さは初心者にありがちだからな
2020/04/27(月) 19:40:47.96
最新 stack で 7.8.4 をセットアップしようとしたら realgcc.exe を使おうとしてコケる
新しい GHC にはあるみたいだけど古い GHC には mingw\bin に存在しないようだ
なのに使おうとしている
なぜ古いのを入れようとしてるかというと競プロサイトのGHCが古いからだ
最新版で通るコードが向こうで弾かれたりして苛ついたから、じゃあそっちの環境で通るコードを提出してやるよとなってインストールを試みたのだ
スタックで古いバージョンのセットアップに自身ニキ、助けて
2020/04/27(月) 21:15:06.74ID:6TeRc6dT
静的型付けの話は一切せず
実行時の振る舞いに関する持論をひたすら展開してモナドがーって

これ半分オブジェクト指向だよ
型はオブジェクトではないから型の話を一切しないんだよ
2020/04/27(月) 22:39:13.77
相対論スレもHaskellスレ同様に荒らされてるの?
2020/04/28(火) 00:09:34.24ID:Bz0WEXXQ
>>281
複数のバージョンを使い分けたいのなら、
Windowsは向かないと思います。

あくせくしてゴチャゴチャになるくらいなら、
さっさと仮想環境にlinux入れてそっちで環境構築した方が
楽で早いのではないでしょうか。
2020/04/28(火) 00:20:49.19ID:fQrwEc0Y
Haskellは何でああも副作用を嫌うの?
2020/04/28(火) 00:24:10.18ID:6HXykM7G
>>285
だから嫌ってない…
2020/04/28(火) 01:57:21.75ID:zsCbc70d
>>285
嫌うという表現は置いておくとして、
純粋関数と副作用の伴う関数とをあれほど切り分けたがるのは、
その方がメンテし易いというのが大きな理由の一つだと思う。
2020/04/28(火) 12:53:37.93
よしわかった。ならばWSL Ubuntu を導入だ。stackをインストールし、古すぎるので最新版stackに替え、stack setup 7.8.4

The GHC located at /home/devlin/.stack/programs/x86_64-linux/ghc-7.8.4/bin/ghc-7.8.4 failed to compile a sanity check. Please see:

http://docs.haskellstack.org/en/stable/install_and_upgrade/

for more information. Exception was:
Received ExitFailure 1 when running
Raw command: /home/devlin/.stack/programs/x86_64-linux/ghc-7.8.4/bin/ghc-7.8.4 /tmp/stack-sanity-check47/Main.hs -no-user-package-db
Run from: /tmp/stack-sanity-check47/
Standard output:

[1 of 1] Compiling Main ( /tmp/stack-sanity-check47/Main.hs, /tmp/stack-sanity-check47/Main.o )
Linking /tmp/stack-sanity-check47/Main ...
Standard error:

/usr/bin/ld: -lgmp a??e|?a??a??a??a??a???
collect2: error: ld returned 1 exit status


神はどうあっても試練を与えようというあああああ!!!!
2020/04/28(火) 17:08:37.94ID:yBopWDZB
言語仕様はHaskellでもいいけど実装は、電池が入ってるインタプリタがいい
コンパイラをコンパイルするのも、ネットのサービス終了も嫌だ
2020/04/28(火) 22:24:50.85ID:fQrwEc0Y
F#ならスクリプト使えるよー
モナドの代わりにコンピューテーション式も使えるよ
副作用も使いまくりだよー
ライブラリーは.NETつかえるよー
GUIはちょっと苦手 でも、ワンレンボディコンのボインちゃん

シャッチョサン、シャッチョサン
シャッチョさんのことだからまけにまけて0円  もってけどろぼー
2020/04/28(火) 22:37:15.08ID:GL0e6TlJ
よし採用
2020/04/29(水) 06:50:08.19
Elmっているこ?いらんこ?
2020/04/29(水) 07:13:41.98ID:SPs1sTfW
分からん
purescriptとかどうなんだろ
2020/04/29(水) 09:16:57.44ID:GLX6jWJt
agdaをjsにコンパイルするのはどうなの?
295デフォルトの名無しさん
垢版 |
2020/04/29(水) 09:36:37.62ID:TuLha3Ht
F#スレ落ちてるね
2020/04/29(水) 10:44:15.44ID:JIRjVKl2
奴は四天王の中でも最弱
2020/04/29(水) 10:47:45.94ID:SPs1sTfW
5chごときにスレが立たないとは
魔族の面汚しよ・・・
2020/04/29(水) 15:25:39.64ID:Cpi+Il5+
>>288
漏れは、Windows 10, WSL, Ubuntu 18.04 で、
Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を入れた

yarn は、Windows側に入れて、WSL から、拡張子なしのyarn コマンドを呼べる。
これは、#!/bin/sh で始まるシェルスクリプト

Windows側で、VSCode の拡張機能、Remote WSLも使う

Haskell のhsenv は、使えないのか?
299298
垢版 |
2020/04/29(水) 15:39:17.08ID:Cpi+Il5+
ちなみに、Ruby on Rails の場合、コンパイルに必要なパッケージは、

sudo apt-get update
してから、

sudo apt install -y build-essential

build-essential には、
gcc(GNU C compiler), g++(GNU C++ compiler), libc6-dev(GNU C Library), make などが入っています

次に、openssl, readline, zlib のパッケージをインストールします。
sudo apt-get install -y libssl-dev libreadline-dev zlib1g-dev

データベースの、libsqlite3-dev, sqlite3 をインストールします。
sudo apt-get install -y libsqlite3-dev sqlite3
2020/04/29(水) 15:47:47.21ID:ob+X7Nc0
的はずれなのでやめて
2020/04/29(水) 15:50:08.55ID:l6fPvkOQ
-lgmpができないならlibgmp-devをインストールすればいい
2020/04/30(木) 17:28:15.60
>>298-299
んにゃぴ・・・んまぁ、そう、よくわかんなかったです

>>300
それでようやく原因が判りました
Stack no longer supports Cabal versions below 1.19.2,
but version 1.18.1.5 was found.
This invocation will most likely fail.
To fix this, either use an older version of Stack or a newer resolver
Acceptable resolvers: lts-3.0/nightly-2015-05-05 or later
stack will use a sandboxed GHC it installed
For more information on paths, see 'stack path' and 'stack exec env'
To use this GHC and packages outside of a project, consider using:
stack ghc, stack ghci, stack runghc, or stack exec

7.8.4 のCabal は 1.18.1.5 であるんですが、最新版 stack は 1.19.2 以降のCabal しか対応しない
というわけで諦めました。いうほど 7.8.4 使いたいかって気分になってきて、エラー出たらその都度古いコードに書き直せばいいじゃんってなったんで
このイシューは閉じます。ありがとうございました。
2020/04/30(木) 17:28:45.70
>>300じゃなくて>>301だった
2020/05/02(土) 07:49:02.53ID:+q7QtdZF
cabalってカバルじゃなくカボールなんだな
2020/05/02(土) 09:29:59.76ID:S0jsNVj+
haskellのライブラリ管理ツールはずっとクソ。
pythonのも大概だけど、haskellはそれを遥かに凌ぐレベルでくそ。
2020/05/02(土) 12:12:56.17ID:2Bfib/9h
そろそろocamlの時代じゃねーか?
2020/05/02(土) 12:50:23.34ID:F6qz2woZ
ライブラリ管理ツールって何をするためのモノなんだ?
ユーザーから何を期待されてるんだ?
2020/05/02(土) 13:54:24.62ID:QDKxMZyf
シェルスクリプトで管理ではなく
そろそろxmlとかyamlとかの時代を期待されてる説
2020/05/04(月) 03:20:08.08ID:tNWuxt0H
待ち遠しい「Algorithm Design withHaskell」
https://www.cambridge.org/core/books/algorithm-design-with-haskell/824BE0319E3762CE8BA5B1D91EEA3F52
310デフォルトの名無しさん
垢版 |
2020/05/04(月) 16:45:39.46ID:R0S0SfqY
ocamlはせっかく盛り返してたのに失言でだいなし
2020/05/04(月) 23:50:02.51ID:Qeb7CV4E
どんな失言?
2020/05/05(火) 13:49:22.34ID:jdwgKTKz
haskellにライブラリ管理ツールなんて無いよね?
2020/05/06(水) 22:37:05.49ID:wUeYrIi1
釧路湿原
2020/05/07(木) 10:57:00.07ID:zCrpEpjK
書籍「関数プログラミング 珠玉のアルゴリズムデザイン」で分からない所があります。

2ページ目3行目
xsに含まれない最小の数は、filter (<= n) xs に含まれない最小の数ということになる。

ここで < ではなく、<= なのは何故でしょうか。
< を使って条件を厳しくしても、

xs = [0], n = 1 ===> filter (<n) xs = [0]
  [0] に含まれない最小数 = 1
xs = [1], n = 1 ===> filter (<n) xs = []
  [] に含まれない最小数 = 0

このように問題無いように思えます。
2020/05/07(木) 16:47:46.68ID:/pjDMUqX
事実を述べているだけに見えるが
何故あの事実ではなくこの事実を切り取ったのかを知りたがるのが面白い
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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