いざ、語ろうぞ。
スレタイ超過のため、一部省略。
その他もウェルカム。
前スレ
次世代言語議論スレ[Go Rust Kotlin Scala]第4世代
http://mevius.2ch.net/test/read.cgi/tech/1492631007/
探検
次世代言語議論スレ[Go Rust Scala Haskell]第5世代 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/06/13(火) 08:54:07.99ID:O1HnBMDk
2017/06/25(日) 20:59:18.08ID:+XToNy/r
Idrisとか?
92デフォルトの名無しさん
2017/06/25(日) 21:00:59.61ID:pYBZiqDJ ええ。。。
最近こそラムダ式とか入ったけど、オブジェクト指向って相変わらず手続き型言語で、コンストラクタって結局構造化プログラミングで言うinit関数でしょ?みたいな感じで処理の分け方が上中下って感じなんだもん。
おまけに肝心の中身はインターフェースでそれぞれのクラスに別々に書いてねとか。
似た様なコード何度も何度も書いてるなー。。。って感じだった。
LLにしても、書き捨て毎に似た様なコード書いてるなー。。。って。
Haskellだからここまで関数化しても遅延評価でメモリを一定以上消費しないんだと思うし、mfput関数一つ書けば中身の処理を考えるのに集中出来た。
(mygrepnとか見つかった文字列を強調赤字にするオマケ付き。
rpとかコマンド名が競合するから短い名前だけど、地味にコード書き換えに活躍してる)
実際に上のコードと同じライブラリ書いてみてよ。
パターンは共通って分かってても、文が邪魔したり、メモリに溜め込む処理になるから断念する場面が出てくると思う。
最近こそラムダ式とか入ったけど、オブジェクト指向って相変わらず手続き型言語で、コンストラクタって結局構造化プログラミングで言うinit関数でしょ?みたいな感じで処理の分け方が上中下って感じなんだもん。
おまけに肝心の中身はインターフェースでそれぞれのクラスに別々に書いてねとか。
似た様なコード何度も何度も書いてるなー。。。って感じだった。
LLにしても、書き捨て毎に似た様なコード書いてるなー。。。って。
Haskellだからここまで関数化しても遅延評価でメモリを一定以上消費しないんだと思うし、mfput関数一つ書けば中身の処理を考えるのに集中出来た。
(mygrepnとか見つかった文字列を強調赤字にするオマケ付き。
rpとかコマンド名が競合するから短い名前だけど、地味にコード書き換えに活躍してる)
実際に上のコードと同じライブラリ書いてみてよ。
パターンは共通って分かってても、文が邪魔したり、メモリに溜め込む処理になるから断念する場面が出てくると思う。
2017/06/25(日) 21:18:47.33ID:8QFIS7Xe
2017/06/25(日) 21:38:11.91ID:8QFIS7Xe
>>92
結局パイプ的に繋いでく話してるだけだな
はっきり言うが、Haskellでまともなプログラム組んでIO扱う途端にその手の使い方はできなくなるよ
その言ってる方法突き詰めたとして、リアクティブプログラミング的になるが、
遅延評価が仇になってサンク作りまくる場合はあるし、遅延評価だから空間計算効率が良いなんて話にもならない
Haskell自身もメモリの効率がいいわけでもない
女アクのGHCのランタイムがまずクッソでかいし
何よりリアクティブプログラミングじゃ、現代のGUIでまともなプログラム作れない
IOなGUIツールキットをリアクティブに対応させるコード書いてる暇あったらIOで書いた方がマシだ
結局パイプ的に繋いでく話してるだけだな
はっきり言うが、Haskellでまともなプログラム組んでIO扱う途端にその手の使い方はできなくなるよ
その言ってる方法突き詰めたとして、リアクティブプログラミング的になるが、
遅延評価が仇になってサンク作りまくる場合はあるし、遅延評価だから空間計算効率が良いなんて話にもならない
Haskell自身もメモリの効率がいいわけでもない
女アクのGHCのランタイムがまずクッソでかいし
何よりリアクティブプログラミングじゃ、現代のGUIでまともなプログラム作れない
IOなGUIツールキットをリアクティブに対応させるコード書いてる暇あったらIOで書いた方がマシだ
2017/06/25(日) 21:42:36.54ID:8QFIS7Xe
正確にはリアクティブプログラミングじゃなくてFunctional Reactive Programingだな
リアクティブだけなら、一つのシグナルストリームでなく分散メッセージでいいし難しくはない
リアクティブだけなら、一つのシグナルストリームでなく分散メッセージでいいし難しくはない
96デフォルトの名無しさん
2017/06/25(日) 22:00:46.32ID:pYBZiqDJ >>94
空間計算効率が良いなんて一言も言ってないが。。。
悪魔で再利用し易さの割にってだけ。
んでもLLと同程度ならほとんどの場合で問題にならないので、このままライブラリ化進めればLLよりチマチマしたの作るのに都合が良い言語になると言うか、既になってる。
半端にLLで空間計算効率考えるよりは、普段はHaskellで富豪的だけどLLより再利用し易いコード書いて、そう言うの重要な場面ではCで書けば良いやってなった。
今時のメモリ搭載量だと小説10冊分が1ファイルに入ってても問題にならんから、実用上ほとんど問題にならん。
それが問題になる時は処理速度的にもLLでも対処出来ない。
空間計算効率が良いなんて一言も言ってないが。。。
悪魔で再利用し易さの割にってだけ。
んでもLLと同程度ならほとんどの場合で問題にならないので、このままライブラリ化進めればLLよりチマチマしたの作るのに都合が良い言語になると言うか、既になってる。
半端にLLで空間計算効率考えるよりは、普段はHaskellで富豪的だけどLLより再利用し易いコード書いて、そう言うの重要な場面ではCで書けば良いやってなった。
今時のメモリ搭載量だと小説10冊分が1ファイルに入ってても問題にならんから、実用上ほとんど問題にならん。
それが問題になる時は処理速度的にもLLでも対処出来ない。
2017/06/25(日) 22:10:00.00ID:8QFIS7Xe
98デフォルトの名無しさん
2017/06/25(日) 22:16:17.15ID:GaCuKOAB >>97
「関数型で書いてもメモリを一定量以上使わない」を「空間計算効率が良い」と解釈するのはいくら何でも頭発達しすぎでしょ……
「関数型で書いてもメモリを一定量以上使わない」を「空間計算効率が良い」と解釈するのはいくら何でも頭発達しすぎでしょ……
2017/06/25(日) 22:20:20.12ID:8QFIS7Xe
ちなみにCで書こうがIOの問題は付随するので変わらない
そもそもパーサをTemplateHaskellとけ使って書いてるレベルならまだしも Haskellで型注釈も無しじゃコンパイル遅すぎだし、
リストを配列代わりにしたり、String使ってテキスト処理してるレベルじゃLLより遥かに動作遅いだろ
普段から使ってるとはとても思えない
そもそもパーサをTemplateHaskellとけ使って書いてるレベルならまだしも Haskellで型注釈も無しじゃコンパイル遅すぎだし、
リストを配列代わりにしたり、String使ってテキスト処理してるレベルじゃLLより遥かに動作遅いだろ
普段から使ってるとはとても思えない
100デフォルトの名無しさん
2017/06/25(日) 22:21:53.78ID:8QFIS7Xe101デフォルトの名無しさん
2017/06/25(日) 22:22:12.23ID:8QFIS7Xe 変換ミス
一体どこに突っ込んでんだよ
一体どこに突っ込んでんだよ
102デフォルトの名無しさん
2017/06/25(日) 22:24:18.08ID:8QFIS7Xe え、まさか本当にストリーム処理書けないとかそんな話?
いくらなんでも違うよね?
いくらなんでも違うよね?
103デフォルトの名無しさん
2017/06/25(日) 22:27:27.12ID:pYBZiqDJ >>97
途中からとはなんぞな?
CUIにしてもGUIにしても、HaskellだとIO部分と純粋部分は強制的に分けて書かざるを得ないから何を言ってるのか。。。
(mfwriteでは同名ファイルに書き込めないので一旦別名で保存して、別名で開く->元の名前で保存ってしてるけど、そう言うのはIOが途中で挟まるってのと違うのん?)
ある意味手続き型言語みたく(と言うか他の関数型もそう言う意味じゃ途中でIO挟まる?)、途中でIO挟まらないパイプみたいな処理にCUIでもGUIでも強制されるのがHaskellの一見不便で長所。
mfptnからmfputとmfwrite作ってる通り、関数に渡す出力先を差し替えるだけで良い。
途中からとはなんぞな?
CUIにしてもGUIにしても、HaskellだとIO部分と純粋部分は強制的に分けて書かざるを得ないから何を言ってるのか。。。
(mfwriteでは同名ファイルに書き込めないので一旦別名で保存して、別名で開く->元の名前で保存ってしてるけど、そう言うのはIOが途中で挟まるってのと違うのん?)
ある意味手続き型言語みたく(と言うか他の関数型もそう言う意味じゃ途中でIO挟まる?)、途中でIO挟まらないパイプみたいな処理にCUIでもGUIでも強制されるのがHaskellの一見不便で長所。
mfptnからmfputとmfwrite作ってる通り、関数に渡す出力先を差し替えるだけで良い。
104デフォルトの名無しさん
2017/06/25(日) 22:32:23.46ID:pYBZiqDJ >>100
それはLLとは言え、手続き型言語がハードの仕組みに依存してるから、Haskellと同じ程度にライブラリ化進めると、普通に書くより遥かにメモリに負担かかるって意味。
Haskellがメモリ効率が良いって言ってるわけじゃ無い。
それはLLとは言え、手続き型言語がハードの仕組みに依存してるから、Haskellと同じ程度にライブラリ化進めると、普通に書くより遥かにメモリに負担かかるって意味。
Haskellがメモリ効率が良いって言ってるわけじゃ無い。
105デフォルトの名無しさん
2017/06/25(日) 22:33:19.85ID:8QFIS7Xe >>103
既存の物を状態を扱うように変更するのにコスト大きい、と突っ込まれとるよね
あとGUIは純粋に分けることを強制される、なんて簡単に終わる話じゃないんだよね
新規に同規模の実装を強制されるわけで
既存の物を状態を扱うように変更するのにコスト大きい、と突っ込まれとるよね
あとGUIは純粋に分けることを強制される、なんて簡単に終わる話じゃないんだよね
新規に同規模の実装を強制されるわけで
106デフォルトの名無しさん
2017/06/25(日) 22:33:55.06ID:8QFIS7Xe >>104
だから結局空間計算量の話ししてるじゃん…
だから結局空間計算量の話ししてるじゃん…
107デフォルトの名無しさん
2017/06/25(日) 22:38:50.94ID:8QFIS7Xe ちうか、出力先を変更する云々なんて別にHaskell関係なくないか?
どこがHaskellでしか出来ない処理と言ってるわけ?
どこがHaskellでしか出来ない処理と言ってるわけ?
108デフォルトの名無しさん
2017/06/25(日) 22:44:55.19ID:GaCuKOAB ヤバい、ほんまもんや(笑)
109デフォルトの名無しさん
2017/06/25(日) 22:56:39.77ID:pYBZiqDJ >>99
うい。
ぶっちゃけ大きめのファイルだとLLより遅いの体感出来るw
んでも実用的な時間だし、上でパイプの例えあったけど言い得て妙で、
LLでforとかeachとかでループとして処理するのもメソッドチェーンみたいにファイル名のリスト受け取って、
中身のリスト受け取って。。。ってパイプ処理して行くから、LLより考え方が流れを辿る感じでシンプルなんだよね。
速さよりも書き易さ優先。
速さ気にしてたらそもそもHaskell選んでない。
速さが我慢出来なくなったらCで書くよ。
ネットでperlで1000万行のファイルの行を逆順にしたいっての見つけて、Cで書いたんだが、3.1GBにもなるファイル読み込ませて逆順表示はCでも待ったな。。。
(一旦全部上から読んで位置情報を配列に入れて、最後に記録した位置から逆に辿る手法だったけど、メモリは4GBメモリの0.6%しか消費してなかった)
Haskellでメモリに溜め込む書き方でも10万行くらいは我慢出来るレベル。
LLならCと同じ手法でメモリに負担かからない方法で書けるだろう。
実はHaskellにもhSeek関数あるから、多分メモリに負担かからない方法で書けると思う。
でも、もうそこまで行くんならCで気持ちよく書く。
うい。
ぶっちゃけ大きめのファイルだとLLより遅いの体感出来るw
んでも実用的な時間だし、上でパイプの例えあったけど言い得て妙で、
LLでforとかeachとかでループとして処理するのもメソッドチェーンみたいにファイル名のリスト受け取って、
中身のリスト受け取って。。。ってパイプ処理して行くから、LLより考え方が流れを辿る感じでシンプルなんだよね。
速さよりも書き易さ優先。
速さ気にしてたらそもそもHaskell選んでない。
速さが我慢出来なくなったらCで書くよ。
ネットでperlで1000万行のファイルの行を逆順にしたいっての見つけて、Cで書いたんだが、3.1GBにもなるファイル読み込ませて逆順表示はCでも待ったな。。。
(一旦全部上から読んで位置情報を配列に入れて、最後に記録した位置から逆に辿る手法だったけど、メモリは4GBメモリの0.6%しか消費してなかった)
Haskellでメモリに溜め込む書き方でも10万行くらいは我慢出来るレベル。
LLならCと同じ手法でメモリに負担かからない方法で書けるだろう。
実はHaskellにもhSeek関数あるから、多分メモリに負担かからない方法で書けると思う。
でも、もうそこまで行くんならCで気持ちよく書く。
110デフォルトの名無しさん
2017/06/25(日) 22:57:17.16ID:8QFIS7Xe やっぱり本気でパイプのようなストリーム処理がLLで書けないと思ってるのかな
今時はラムダなどのストリーム処理なんてJavaですら標準でついてるってのに
>>108
何が「ほんまもん」なんですかね
もしかしてどっちもO(1)で一緒とか言いたいの?
空間計算量って、それ自体はO-notationでの表記のことじゃないぞ?
今時はラムダなどのストリーム処理なんてJavaですら標準でついてるってのに
>>108
何が「ほんまもん」なんですかね
もしかしてどっちもO(1)で一緒とか言いたいの?
空間計算量って、それ自体はO-notationでの表記のことじゃないぞ?
111デフォルトの名無しさん
2017/06/25(日) 23:05:34.61ID:CvCdLd6J 「副作用で世界がどんどん変わって行くのを俺が全部コントロールして阻止しなければならない…
そうでなければこの世界はバラバラになってしまう…」
「どうしたんですか?先輩」(もぐもぐ
「おお後輩!…なんだそれ?」
「売店がパンじゃなくて弁当扱い出したんですよ
ゴミかさばるから売店とこで捨てろですって。
まぁ、どうせ僕が一括して持ってくんでしょうがw」
「後輩」
「はい?」
「カレーある?」
「たしか」
「じゃあ、それ一つ」
「はい」
そうでなければこの世界はバラバラになってしまう…」
「どうしたんですか?先輩」(もぐもぐ
「おお後輩!…なんだそれ?」
「売店がパンじゃなくて弁当扱い出したんですよ
ゴミかさばるから売店とこで捨てろですって。
まぁ、どうせ僕が一括して持ってくんでしょうがw」
「後輩」
「はい?」
「カレーある?」
「たしか」
「じゃあ、それ一つ」
「はい」
112デフォルトの名無しさん
2017/06/25(日) 23:09:52.30ID:GaCuKOAB ヤバいこいつ論点分からず突っかかってる
113デフォルトの名無しさん
2017/06/25(日) 23:11:04.64ID:pYBZiqDJ >>107
うーん。。。出力先もだけど、差し替え易さとか、処理対象の単位を行き来し易いとか。。。かな?
ループだとファイル単位、行単位、文字単位って決まっちゃうと、中々そこから抜け出せないけど、例えば複数ファイルの行で一番長い行を調べたいとする。
(実はCで上の逆順コード書く際のバッファの大きさを決めるために書いた)
最初、トーナメント形式に各ファイルで一番長い行出させて、そこからさらに一番を決めて出力してた。
んで、途中で全ファイルの行の長さ出た時点で一位決められるじゃん。と、数値のリストのリストを平坦化して一気に一位決めた。
そう言うループじゃ無くて、悪魔でリストのリストを受け取って〜。。。って考えると簡単に行単位とかそう言う枠を超えられる。
LLでも出来るだろうけど、思いつき易い。
うーん。。。出力先もだけど、差し替え易さとか、処理対象の単位を行き来し易いとか。。。かな?
ループだとファイル単位、行単位、文字単位って決まっちゃうと、中々そこから抜け出せないけど、例えば複数ファイルの行で一番長い行を調べたいとする。
(実はCで上の逆順コード書く際のバッファの大きさを決めるために書いた)
最初、トーナメント形式に各ファイルで一番長い行出させて、そこからさらに一番を決めて出力してた。
んで、途中で全ファイルの行の長さ出た時点で一位決められるじゃん。と、数値のリストのリストを平坦化して一気に一位決めた。
そう言うループじゃ無くて、悪魔でリストのリストを受け取って〜。。。って考えると簡単に行単位とかそう言う枠を超えられる。
LLでも出来るだろうけど、思いつき易い。
114デフォルトの名無しさん
2017/06/25(日) 23:12:43.68ID:pYBZiqDJ115デフォルトの名無しさん
2017/06/25(日) 23:15:11.08ID:8QFIS7Xe >>109
言いたい事はわからんでもないけど、そんなにhaskell使いやすい?
自分もHaskellは複雑な構造の解析とか、何か本質的な部分の問題解くときにghci使う事あるけどさ、
実装はやっぱりpythonとかのが楽ってなったよ
Stackやcabalの設定編集も面倒だしコンパイル遅いし
mapM_あたり使うような物で純粋を目標にしてると、本末転倒になる事が多いし
言いたい事はわからんでもないけど、そんなにhaskell使いやすい?
自分もHaskellは複雑な構造の解析とか、何か本質的な部分の問題解くときにghci使う事あるけどさ、
実装はやっぱりpythonとかのが楽ってなったよ
Stackやcabalの設定編集も面倒だしコンパイル遅いし
mapM_あたり使うような物で純粋を目標にしてると、本末転倒になる事が多いし
116デフォルトの名無しさん
2017/06/25(日) 23:17:22.59ID:8QFIS7Xe117デフォルトの名無しさん
2017/06/25(日) 23:27:50.72ID:8QFIS7Xe >>114
ポイントフリースタイルとの組み合わせは確かにHaskell特有だけど、
個人的には実装はIOの文脈で、パイプ演算子とパターンマッチを使える
F#やLiveScript(altJS)のような言語方が楽だと思うぞ
ポイントフリースタイルとの組み合わせは確かにHaskell特有だけど、
個人的には実装はIOの文脈で、パイプ演算子とパターンマッチを使える
F#やLiveScript(altJS)のような言語方が楽だと思うぞ
118デフォルトの名無しさん
2017/06/25(日) 23:45:27.87ID:pYBZiqDJ >>115
なんつーか、さすがにGUIとかはC#使うわってなるけど、確かにコンパイル遅くて微妙に感じもしたけど、上のライブラリみたくガンガン関数化すればPythonでループのシーケンスにargv[1:]ってしてー。。。
逆順だとReversed(list(sys.argv[1:]))でー。。。とか調べないとな場面が度々ね。
んで、毎回複数ファイルから読み込まるのにforって書いて、行毎だとまたfor。。。
Haskellもライブラリ作る前は似たり寄ったりだったけど、ライブラリ書いてからはmfputにファイル名のリストと、各ファイル向け(1ファイル向け)に処理させたい関数渡すだけで大体のツール作れる。
多少パターンが特殊でもmfptnで対応出来る。
ループ的なのを関数に押し込んで、開きたいファイルと処理させたい関数だけ気にしてれば良くなった。
(逆にサポート外のパターンには無力だが。関数化は使い方も規定しちゃうから仕方ない)
Pythonだとあんまここまでライブラリ化出来る気がしない。。。
PythonやRubyの書き捨てでも楽だって思ってたけど、多分もう戻れない。
なんつーか、さすがにGUIとかはC#使うわってなるけど、確かにコンパイル遅くて微妙に感じもしたけど、上のライブラリみたくガンガン関数化すればPythonでループのシーケンスにargv[1:]ってしてー。。。
逆順だとReversed(list(sys.argv[1:]))でー。。。とか調べないとな場面が度々ね。
んで、毎回複数ファイルから読み込まるのにforって書いて、行毎だとまたfor。。。
Haskellもライブラリ作る前は似たり寄ったりだったけど、ライブラリ書いてからはmfputにファイル名のリストと、各ファイル向け(1ファイル向け)に処理させたい関数渡すだけで大体のツール作れる。
多少パターンが特殊でもmfptnで対応出来る。
ループ的なのを関数に押し込んで、開きたいファイルと処理させたい関数だけ気にしてれば良くなった。
(逆にサポート外のパターンには無力だが。関数化は使い方も規定しちゃうから仕方ない)
Pythonだとあんまここまでライブラリ化出来る気がしない。。。
PythonやRubyの書き捨てでも楽だって思ってたけど、多分もう戻れない。
119デフォルトの名無しさん
2017/06/25(日) 23:47:28.90ID:GaCuKOAB120デフォルトの名無しさん
2017/06/25(日) 23:54:14.28ID:GaCuKOAB 相手の意図を組めないという点ではエンジニアガイジと同類っぽいなー
121デフォルトの名無しさん
2017/06/26(月) 00:09:44.62ID:jZyN4LOL そう。
空間計算効率の話自体はしてても、Haskellと同程度にライブラリ化したらLLが今までより空間計算効率が落ちる(もしくはイテレータ地獄になる)って言ってるだけで、Haskellの空間計算効率が良いなんて言ってない。
空間計算効率の話自体はしてても、Haskellと同程度にライブラリ化したらLLが今までより空間計算効率が落ちる(もしくはイテレータ地獄になる)って言ってるだけで、Haskellの空間計算効率が良いなんて言ってない。
122デフォルトの名無しさん
2017/06/26(月) 00:15:26.29ID:f2qWRibY 初めてKotlinで書いてみたけど意外と悪くないな
驚きが非常に少なく無理がない
C#みたいな天才肌とは違ってとにかく無難でつまらない印象だけど、
Javaからの乗り換えという意味では最適なとても筋のいい言語だと思うわ
import java.io.File
fun Sequence<String>.grep(w: String) = this.filter { w in it }
fun redstr(w: String) = "赤(${w})"
fun counsnum(i: Int, xs: String) = "%4d:%s".format(i, xs)
fun numbering(lines: Sequence<String>) = lines.mapIndexed({ i, xs -> counsnum(i + 1, xs) })
fun main(args: Array<String>) {
val (w, fs) = args
val lines = File(fs). bufferedReader().lineSequence()
numbering(lines).grep(w).map({ redstr(it) }) }.forEach({ println(it) })
}
驚きが非常に少なく無理がない
C#みたいな天才肌とは違ってとにかく無難でつまらない印象だけど、
Javaからの乗り換えという意味では最適なとても筋のいい言語だと思うわ
import java.io.File
fun Sequence<String>.grep(w: String) = this.filter { w in it }
fun redstr(w: String) = "赤(${w})"
fun counsnum(i: Int, xs: String) = "%4d:%s".format(i, xs)
fun numbering(lines: Sequence<String>) = lines.mapIndexed({ i, xs -> counsnum(i + 1, xs) })
fun main(args: Array<String>) {
val (w, fs) = args
val lines = File(fs). bufferedReader().lineSequence()
numbering(lines).grep(w).map({ redstr(it) }) }.forEach({ println(it) })
}
123デフォルトの名無しさん
2017/06/26(月) 02:35:16.31ID:jZyN4LOL >>122
kotlinのコードこのスレで初めて見たし、他のスレでもここまでまともなの見なかった。
thanks.
わざわざ見つかった文字列を赤文字にする所まで再現してくれるとは。。。
もうHaskellに惚れちゃってるからメインにならんだろうけど、確かに筋は良さそう。
GUIなコード書くのには良いかもしれんね。
行単位で受け取って行単位で出力する辺り、やっぱ手続き型言語と感じるけど。
だからこそ効率が良くて、そこを意識するからこそ柔軟性の限界感じる。
HaskellはStringが遅いだけで、バッファ効率自体は多分良い。
行単位とかじゃ無くて目一杯バッファに入れてると思う。
ByteString慣れないと説得力無いんだろうけど。。。
面倒いなぁ。。。
そこまでしないと勝負にならないなら、あんたの勝ちでいいよって思うもん。
手早く書けて使える速度なら充分だし。
kotlinのコードこのスレで初めて見たし、他のスレでもここまでまともなの見なかった。
thanks.
わざわざ見つかった文字列を赤文字にする所まで再現してくれるとは。。。
もうHaskellに惚れちゃってるからメインにならんだろうけど、確かに筋は良さそう。
GUIなコード書くのには良いかもしれんね。
行単位で受け取って行単位で出力する辺り、やっぱ手続き型言語と感じるけど。
だからこそ効率が良くて、そこを意識するからこそ柔軟性の限界感じる。
HaskellはStringが遅いだけで、バッファ効率自体は多分良い。
行単位とかじゃ無くて目一杯バッファに入れてると思う。
ByteString慣れないと説得力無いんだろうけど。。。
面倒いなぁ。。。
そこまでしないと勝負にならないなら、あんたの勝ちでいいよって思うもん。
手早く書けて使える速度なら充分だし。
124デフォルトの名無しさん
2017/06/26(月) 04:34:26.65ID:z8x4rlt1125デフォルトの名無しさん
2017/06/26(月) 04:36:09.09ID:z8x4rlt1 >>120
お前もうただ言い方に突っかかってるだけだろそれ
お前もうただ言い方に突っかかってるだけだろそれ
126デフォルトの名無しさん
2017/06/26(月) 07:49:16.94ID:b8W7cjsr >>118
引数の逆順でファイル読み込んで一つのイテレータにするだけなら、pythonならこれだけじゃね?
(x for f in argv[1:][::-1] for x in open(f))
これをイテレータを処理する関数の引数に渡せば、お前のやりたい事できてるよね?
引数の逆順でファイル読み込んで一つのイテレータにするだけなら、pythonならこれだけじゃね?
(x for f in argv[1:][::-1] for x in open(f))
これをイテレータを処理する関数の引数に渡せば、お前のやりたい事できてるよね?
127デフォルトの名無しさん
2017/06/26(月) 08:09:40.24ID:O05czwZw そうも書けるんだ。
でももうcatコマンドだったら
main = getArgs >>= mfput fs id
って書けば良いようにライブラリ作っちゃったし、もう良い。
mf = マルチファイル
でももうcatコマンドだったら
main = getArgs >>= mfput fs id
って書けば良いようにライブラリ作っちゃったし、もう良い。
mf = マルチファイル
128デフォルトの名無しさん
2017/06/26(月) 08:11:46.44ID:dzp1rCHS >>123
入出力関数が適切にバッファリングしてると思うけど?
入出力関数が適切にバッファリングしてると思うけど?
129デフォルトの名無しさん
2017/06/26(月) 08:12:49.97ID:O05czwZw 逆順だとunlines.reverse.linesしないと改行が変になるから
main = mfput fs (unlines.reverse.lines)
unlines.f.limesパターンも良く使うから
main = mfput fs (fline reverse)
って書けるようにしたし。
main = mfput fs (unlines.reverse.lines)
unlines.f.limesパターンも良く使うから
main = mfput fs (fline reverse)
って書けるようにしたし。
130デフォルトの名無しさん
2017/06/26(月) 08:15:23.64ID:O05czwZw あ、
main = getArgs >>= mfput fs (fline reverse)
だった。
main = getArgs >>= mfput fs (fline reverse)
だった。
131デフォルトの名無しさん
2017/06/26(月) 08:19:14.81ID:O05czwZw >>128
うい、行単位でね。
Haskellは基本ファイルの中身を丸ごと文字列で受け取って、文字列で返すから、行って考えはナンバリングしたいとか、行単位で処理したいって思った時に初めてunlines.f.linesパターンで行単位に分解する。
なので出力するHaskellランタイム側にも行単位って概念が無い。
うい、行単位でね。
Haskellは基本ファイルの中身を丸ごと文字列で受け取って、文字列で返すから、行って考えはナンバリングしたいとか、行単位で処理したいって思った時に初めてunlines.f.linesパターンで行単位に分解する。
なので出力するHaskellランタイム側にも行単位って概念が無い。
132デフォルトの名無しさん
2017/06/26(月) 08:29:13.90ID:dzp1rCHS133デフォルトの名無しさん
2017/06/26(月) 08:29:22.47ID:O05czwZw まあ、そんな事してるからHaskellは遅いんだろうなってのはある。
文字単位でバッファ目一杯入出力するけど、加工過程で分解して戻してってしてるんだし。
文字単位でバッファ目一杯入出力するけど、加工過程で分解して戻してってしてるんだし。
134デフォルトの名無しさん
2017/06/26(月) 08:30:25.78ID:O05czwZw135デフォルトの名無しさん
2017/06/26(月) 08:37:10.13ID:O05czwZw136デフォルトの名無しさん
2017/06/26(月) 08:44:37.68ID:e8nxxM8b KotlinはJava標準ライブラリに対する拡張も上手い
Javaに背を向けたScalaとは違って、Java標準ライブラリの良いところ駄目なところを深く理解して
最小限でツボを押さえた拡張を入れてる
Scalaが一瞬で要らない子になったのも納得
Javaに背を向けたScalaとは違って、Java標準ライブラリの良いところ駄目なところを深く理解して
最小限でツボを押さえた拡張を入れてる
Scalaが一瞬で要らない子になったのも納得
137デフォルトの名無しさん
2017/06/26(月) 08:51:02.56ID:O05czwZw >>126
ついでに言えばPythonのは逆順でもメモリに溜め込まないはずで、大きなファイルだとPython使った方がいいってことになる。
でも、今時のスペックで問題になる程溜め込む場面自体が無い。
小説100冊分が1ファイルに入ってやっとちょっと気になるレベルだから。
なら、より短く書ける方がいい。
コンパイル遅いつっても書き捨てレベルなら毎度毎度定型的にPythonで書いてる時間で終わってる。
自分でライブラリ作ってからは完全にLL的な使い方はHaskellで良いやってなった。
素のままだとPythonのが良いけどね。
自分でライブラリ作るかどうかが決め手だった。
ついでに言えばPythonのは逆順でもメモリに溜め込まないはずで、大きなファイルだとPython使った方がいいってことになる。
でも、今時のスペックで問題になる程溜め込む場面自体が無い。
小説100冊分が1ファイルに入ってやっとちょっと気になるレベルだから。
なら、より短く書ける方がいい。
コンパイル遅いつっても書き捨てレベルなら毎度毎度定型的にPythonで書いてる時間で終わってる。
自分でライブラリ作ってからは完全にLL的な使い方はHaskellで良いやってなった。
素のままだとPythonのが良いけどね。
自分でライブラリ作るかどうかが決め手だった。
138デフォルトの名無しさん
2017/06/26(月) 10:49:16.29ID:/blKTM20 複数のファイルを順番に読んでいって、特定の文字列が見つかるまで入力をそのまま出力する
文字列が見つかったら即終了
ってプログラムを、その自慢のライブラリで書いてみてよ
文字列が見つかったら即終了
ってプログラムを、その自慢のライブラリで書いてみてよ
139デフォルトの名無しさん
2017/06/26(月) 10:53:00.61ID:IaB2vgDA スレ違いの日記帳の相手してどうすんの
140デフォルトの名無しさん
2017/06/26(月) 11:35:20.04ID:e8nxxM8b 行単位なのはダサいといいながら自分のライブラリはべったり行単位に依存してるのが笑いどころだな
結局行単位が便利だと思う人が多いからlineSequenceみたいなユーティリティが標準で用意されてるだけで、
やってることはunlines.f.linesと変わらんぞ
結局行単位が便利だと思う人が多いからlineSequenceみたいなユーティリティが標準で用意されてるだけで、
やってることはunlines.f.linesと変わらんぞ
141デフォルトの名無しさん
2017/06/26(月) 12:07:26.65ID:lPpre0LA >>138
import System.Environment
import Data.List
import Myfunc
main = getArgs >>= (w:fs) ->
mfput (unlines.lines.last.(takeWhile (not.isInfixOf w)).inits) fs
import System.Environment
import Data.List
import Myfunc
main = getArgs >>= (w:fs) ->
mfput (unlines.lines.last.(takeWhile (not.isInfixOf w)).inits) fs
142デフォルトの名無しさん
2017/06/26(月) 12:56:36.59ID:+LDRBUDl import System.Environment
import Data.List
import Myfunc
main = getArgs >>= (w:fs) ->
mfput ((++ "\n").last.(takeWhile (not.isInfixOf w)).inits) fs
unlines.lines要らんかった。
直後って書いてたから最初の検索文字列全部表示される前に終了かと思って上のコードにしたけど、最初の検索文字列表示した時点で終了なら、takeWhileをdropWhileにして、lastをheadにすれば良い。
import Data.List
import Myfunc
main = getArgs >>= (w:fs) ->
mfput ((++ "\n").last.(takeWhile (not.isInfixOf w)).inits) fs
unlines.lines要らんかった。
直後って書いてたから最初の検索文字列全部表示される前に終了かと思って上のコードにしたけど、最初の検索文字列表示した時点で終了なら、takeWhileをdropWhileにして、lastをheadにすれば良い。
143デフォルトの名無しさん
2017/06/26(月) 14:59:05.87ID:a2h1pIHa144デフォルトの名無しさん
2017/06/28(水) 22:04:57.53ID:l3RQzrcR F#ってどうよ
145デフォルトの名無しさん
2017/06/29(木) 00:10:11.51ID:qxdPWLiZ OCAMLを.netで記法(not構文)変えて作りましたって感じ>F#
冗長記法だとOCAML互換性高いし
冗長記法だとOCAML互換性高いし
146デフォルトの名無しさん
2017/06/29(木) 17:11:41.82ID:wGgfLCtF ***SLAMO***
}
000-"F","TAP","0","1M","L","E-07"/0B"[9BA%]"^"2*73B"="0"/"9GA"
001-"Do"[[[%9DE=HUF%%!%$0B1OTU"NE"]]]<\b>
002-<<%!!!HNDEL%!0DAI@$7[1B]!0#!@>>
3000-{{1\B%HUF!0$$\%6/0Q\%6/GA[[7BU]]%9TE!%$en$}}
---
[[[C%%]]]
}
000-"5802"/"α"="0.1888412376155482"%en{
}
000-"F","TAP","0","1M","L","E-07"/0B"[9BA%]"^"2*73B"="0"/"9GA"
001-"Do"[[[%9DE=HUF%%!%$0B1OTU"NE"]]]<\b>
002-<<%!!!HNDEL%!0DAI@$7[1B]!0#!@>>
3000-{{1\B%HUF!0$$\%6/0Q\%6/GA[[7BU]]%9TE!%$en$}}
---
[[[C%%]]]
}
000-"5802"/"α"="0.1888412376155482"%en{
147デフォルトの名無しさん
2017/06/30(金) 08:41:39.49ID:l6mEUTPw F# は 関数型らしい抽象化機能※ を持っていないのが欠点
抽象化は .NET ( C# ) 互換の抽象クラスやインターフェースで実現することができる
でも型推論が効かなかったり null 安全でなかったりして辛い
※OCaml では構造的部分型やモジュール抽象化
Haskell では型クラスや型族のこと
抽象化は .NET ( C# ) 互換の抽象クラスやインターフェースで実現することができる
でも型推論が効かなかったり null 安全でなかったりして辛い
※OCaml では構造的部分型やモジュール抽象化
Haskell では型クラスや型族のこと
148デフォルトの名無しさん
2017/06/30(金) 20:40:32.58ID:2TVIteiy 型だけを見ればC#とF#は同じだろ
Haskellだって型だけを見れば他の言語で同じものは作れる
型だけを見るのが王道
逆に型を無視してHaskellにしかないものを強調するのは邪道だから
惑わされるなよ
Haskellだって型だけを見れば他の言語で同じものは作れる
型だけを見るのが王道
逆に型を無視してHaskellにしかないものを強調するのは邪道だから
惑わされるなよ
149デフォルトの名無しさん
2017/06/30(金) 20:44:45.42ID:QqdIJRSN 次世代言語でHaskell並にちゃんとした型システムが入ってる言語ってある?
150デフォルトの名無しさん
2017/06/30(金) 21:24:26.03ID:2TVIteiy Haskell並ならちゃんとしてるというのは本当か?
ちゃんとしてないから「Haskell並」や「Haskellよりマシ」と言い訳するんじゃないか
ちゃんとしてないから「Haskell並」や「Haskellよりマシ」と言い訳するんじゃないか
151デフォルトの名無しさん
2017/06/30(金) 21:27:48.40ID:2Da2vksV 構造的部分型が「ちゃんとしてる」かは大いに疑問
あんなもんドカタITで使ったら悪夢だろ
あんなもんドカタITで使ったら悪夢だろ
152デフォルトの名無しさん
2017/06/30(金) 21:57:41.84ID:onXQUvLg >>151
Haskellの機能じゃないし、その上根拠もない
Haskellの機能じゃないし、その上根拠もない
153デフォルトの名無しさん
2017/06/30(金) 22:00:33.62ID:onXQUvLg154デフォルトの名無しさん
2017/07/01(土) 09:18:35.85ID:1tCqnKMv 中途半端な奴だな
オレが一位だというならまだわかるが
Haskellが上位だという主張の何が嬉しいのか
オレが一位だというならまだわかるが
Haskellが上位だという主張の何が嬉しいのか
155デフォルトの名無しさん
2017/07/01(土) 10:27:16.17ID:yvgbUlYU 古い関数型言語関係の本だと、論理型言語が関数型言語の次の世代とか書いてて、まあ実際最近ワトソンやらペッパーやらAI関係で注目されてるのも論理型言語な訳で。
んじゃPrologはHaskellより使い易いんか?と勉強中。
早くもコレジャナイ感が。。。
もっと今時の論理型言語って無いんかな。
んじゃPrologはHaskellより使い易いんか?と勉強中。
早くもコレジャナイ感が。。。
もっと今時の論理型言語って無いんかな。
156デフォルトの名無しさん
2017/07/01(土) 10:52:05.29ID:yAtrmQtL Adaの型はどう?
157デフォルトの名無しさん
2017/07/01(土) 20:53:28.76ID:fjhXkhY/158デフォルトの名無しさん
2017/07/01(土) 22:05:29.59ID:wWo+lhH6 ケチつけたいだけのガガガガイジの相手すんなよな
159デフォルトの名無しさん
2017/07/01(土) 22:57:47.40ID:1tCqnKMv 競争に勝つためにケチをつける自由がある
負ける自由もある
好きな方を選べ
負ける自由もある
好きな方を選べ
160デフォルトの名無しさん
2017/07/02(日) 00:11:43.12ID:gxDwTGkS あ、そう言うこと言っちゃう?
おいらのライブラリ(>>84-85)の肝はmfputとmfwriteだが、結局他の言語で同じ様な関数作ってない。
当然だ。
Haskellは手続き型言語のforにあたるmap系の関数もそのまんま関数だし、Haskellだと自然に出力系は最後尾に追いやられるから関数化しやすいんだよ。
普通の言語は処理しながら出力する。
確かに効率が良い。
だが、再利用し難い。
今時のPCなら効率より再利用性のが重要だと思うんだ。
異論は認める。
おいらのライブラリ(>>84-85)の肝はmfputとmfwriteだが、結局他の言語で同じ様な関数作ってない。
当然だ。
Haskellは手続き型言語のforにあたるmap系の関数もそのまんま関数だし、Haskellだと自然に出力系は最後尾に追いやられるから関数化しやすいんだよ。
普通の言語は処理しながら出力する。
確かに効率が良い。
だが、再利用し難い。
今時のPCなら効率より再利用性のが重要だと思うんだ。
異論は認める。
161デフォルトの名無しさん
2017/07/02(日) 01:00:22.98ID:C9YQ5tYh 大きなファイルを処理できないことで再利用性が大幅に低下するとは考えないのかな?
再利用の機会の多いものであれば少々手間をかけても効率を上げる価値があるケースもある
再利用の機会の多いものであれば少々手間をかけても効率を上げる価値があるケースもある
162デフォルトの名無しさん
2017/07/02(日) 01:20:46.16ID:u1Wmv21R LispとPrologの構文は汎用性があるからパーサーの再利用が重要だよ
文字列処理のような新しいパーサーを作る機能は重要じゃないよ
でも文字列の処理を書いてしまったらもう再利用を語る資格はないと思う
文字列処理のような新しいパーサーを作る機能は重要じゃないよ
でも文字列の処理を書いてしまったらもう再利用を語る資格はないと思う
163デフォルトの名無しさん
2017/07/02(日) 07:23:22.14ID:WUD7Q/xy >>161
何度も書いた気はするんだが、遅延評価でメモリに溜め込んで出力してる様に見える処理も、
実際に火必要に応じて出力しながら処理してるから、.実際に溜め込んじゃうreverse使う様な処理じゃなければ大きなファイルも扱えるし、その気になればreverseな処理もCのfseek相当の関数もあるから克服出来る。
ただ、そこまで大きなファイルなら、Cで書いた方が速いの分かってるし適材適所。
何度も書いた気はするんだが、遅延評価でメモリに溜め込んで出力してる様に見える処理も、
実際に火必要に応じて出力しながら処理してるから、.実際に溜め込んじゃうreverse使う様な処理じゃなければ大きなファイルも扱えるし、その気になればreverseな処理もCのfseek相当の関数もあるから克服出来る。
ただ、そこまで大きなファイルなら、Cで書いた方が速いの分かってるし適材適所。
164デフォルトの名無しさん
2017/07/02(日) 08:20:48.27ID:uovtJU8N165デフォルトの名無しさん
2017/07/02(日) 09:08:10.92ID:hGhen2or 出力先がない状況って何ンゴ?
166デフォルトの名無しさん
2017/07/02(日) 09:28:31.60ID:lZlu9LSV >>160
mapに出来てforに出来ない事って何?
mapに出来てforに出来ない事って何?
167デフォルトの名無しさん
2017/07/02(日) 09:46:22.26ID:0JAKzAeZ 明らかに>>122の方が可読性が高い件
168デフォルトの名無しさん
2017/07/02(日) 09:53:43.24ID:nuNQpba8 forに出来てgotoに出来ないことって何?
169デフォルトの名無しさん
2017/07/02(日) 09:54:28.82ID:sP9TjomQ もうjavascriptだけで良いよ
170デフォルトの名無しさん
2017/07/02(日) 09:55:33.26ID:lZlu9LSV >>168
ライブラリ化や可読性の意味でだよ
ライブラリ化や可読性の意味でだよ
171デフォルトの名無しさん
2017/07/02(日) 09:58:49.45ID:lZlu9LSV ちなみにHaskellではforMとmapMは引数の順番が逆なだけ
172デフォルトの名無しさん
2017/07/02(日) 11:33:32.10ID:Nl2/i6W2 fmapと内包表記とdo記法は外見が違うだけ
javaとscalaとkotlinみたいなもん
javaとscalaとkotlinみたいなもん
173デフォルトの名無しさん
2017/07/02(日) 12:30:20.47ID:Ey9UZy2f174デフォルトの名無しさん
2017/07/02(日) 12:36:37.05ID:0JAKzAeZ >>173
今時はyieldとかあるんやで
今時はyieldとかあるんやで
175デフォルトの名無しさん
2017/07/02(日) 12:39:37.96ID:Nl2/i6W2 値を返せないのは、getterを作るなというOOPの教義のせいでもある
176デフォルトの名無しさん
2017/07/02(日) 14:28:11.11ID:lZlu9LSV >>173
老害を自覚しましょうね
老害を自覚しましょうね
177デフォルトの名無しさん
2017/07/02(日) 15:37:42.58ID:Nl2/i6W2 pythonのyieldはStopIterationが気持ち悪い
ではnullを返せばいいかというとそれも気持ち悪い
値を返せない空気に逆らうのは楽じゃない
ではnullを返せばいいかというとそれも気持ち悪い
値を返せない空気に逆らうのは楽じゃない
178パシュー
2017/07/02(日) 16:23:07.20ID:JZu2jdmH スレ違いであればすみません、どなたかわかる方いらっしゃればお願いします。
先日、営業電話があり、お宅のところはau光を利用してますよね?
→今まで、この手の電話で言った覚えが無い。ただ、au光は確かに利用・・・
何故、わかるのか問いただしたところ、相手からこちらの固定電話に電話するときや、
メールに送信するときの反応、時間、信号?跳ね返りの反応? でわかりますとの回答。
確かに先日、某サイトから携帯とセットでネット環境の見直しとして、
問い合わせはしましたが、果たして、相手からメールアドレスを
送信した時の反応や送信までの時間、
電話が繋がるまでの少しの時間での反応などで分かるものなのでしょうか?
ちなみに携帯の番号は教えてません。携帯であればドコモやauなどとあたりをつけることはわかるのですが…
どなたか教えて下さい!
先日、営業電話があり、お宅のところはau光を利用してますよね?
→今まで、この手の電話で言った覚えが無い。ただ、au光は確かに利用・・・
何故、わかるのか問いただしたところ、相手からこちらの固定電話に電話するときや、
メールに送信するときの反応、時間、信号?跳ね返りの反応? でわかりますとの回答。
確かに先日、某サイトから携帯とセットでネット環境の見直しとして、
問い合わせはしましたが、果たして、相手からメールアドレスを
送信した時の反応や送信までの時間、
電話が繋がるまでの少しの時間での反応などで分かるものなのでしょうか?
ちなみに携帯の番号は教えてません。携帯であればドコモやauなどとあたりをつけることはわかるのですが…
どなたか教えて下さい!
179デフォルトの名無しさん
2017/07/02(日) 18:05:16.33ID:XQorprgY 選択肢が少なけりゃあてずっぽでいいだろw
180デフォルトの名無しさん
2017/07/02(日) 18:06:59.55ID:O/UEQvVu181デフォルトの名無しさん
2017/07/02(日) 21:50:57.08ID:19kDKEGS182デフォルトの名無しさん
2017/07/02(日) 22:22:57.06ID:19kDKEGS >>176
まあ若いと言えない年になりつつあって20代の頃に比べりゃ覚えが悪くなってる自覚はある。
それでもC/C++、VB(.net含む)、Java、C#、Python、Ruby、smalltalk、Delphi含むPascal、もちHaskellは割と使えるぞ。
なんと無く分かっただけなのはLisp、Prolog、Erlang。
関数論理型言語Curryはもうチョイメジャーになったら本格的に覚えたい。
でもな。
学習と挫折繰り返した末に到達したのは覚えた言語の数じゃないって事だ。
知るべきはアルゴリズムや文法じゃ無い。(いあ、後々覚えなきゃだが)
作りたいアプリに対する周辺知識。(ファイル構造だったり、アプリにしたい事象に対する知識)
まあ若いと言えない年になりつつあって20代の頃に比べりゃ覚えが悪くなってる自覚はある。
それでもC/C++、VB(.net含む)、Java、C#、Python、Ruby、smalltalk、Delphi含むPascal、もちHaskellは割と使えるぞ。
なんと無く分かっただけなのはLisp、Prolog、Erlang。
関数論理型言語Curryはもうチョイメジャーになったら本格的に覚えたい。
でもな。
学習と挫折繰り返した末に到達したのは覚えた言語の数じゃないって事だ。
知るべきはアルゴリズムや文法じゃ無い。(いあ、後々覚えなきゃだが)
作りたいアプリに対する周辺知識。(ファイル構造だったり、アプリにしたい事象に対する知識)
183デフォルトの名無しさん
2017/07/02(日) 22:26:25.12ID:19kDKEGS あ、x86とARMのアセンブラもか。
184デフォルトの名無しさん
2017/07/02(日) 22:31:49.24ID:19kDKEGS てか、Haskellのお陰でクイックソートがやマージソートがどう言う動きしてんのか理解出来たんだよ。
そう言う意味じゃCやJavaのアルゴリズム本みたいにコード示して終わりじゃ無くて、超初心者向けのどう言う動きですって動きだけ説明してる本のが有用だわ。
それ読んでコード書けない程度の抽象的な考えが出来ない(おいらみたいな)奴はプログラマの才能無い。
そう言う意味じゃCやJavaのアルゴリズム本みたいにコード示して終わりじゃ無くて、超初心者向けのどう言う動きですって動きだけ説明してる本のが有用だわ。
それ読んでコード書けない程度の抽象的な考えが出来ない(おいらみたいな)奴はプログラマの才能無い。
185デフォルトの名無しさん
2017/07/03(月) 00:03:55.72ID:Tx9mAztB Haskellのinplace quicksortって可読性低くて冗長じゃん
Haskellerはあんなのが読みやすいの?
それとも、全く実用にならないquicksortのコードみて簡潔だと思っちゃったタイプ?
Haskellerはあんなのが読みやすいの?
それとも、全く実用にならないquicksortのコードみて簡潔だと思っちゃったタイプ?
186デフォルトの名無しさん
2017/07/03(月) 00:05:35.20ID:MHKU0t6b 再帰のクイックソートは理解しやすいからな
実用性はともかく
実用性はともかく
187デフォルトの名無しさん
2017/07/03(月) 00:08:46.80ID:UYk8Gv77 >>185
うい。
TDNクイックソートで簡潔だと思ったタイプ。
遅いって分かっててもね。
動作さえ分かれば他の言語で書けるんじゃよ。
そしたら実用的になる。
LL的な使い方なら速度必要無いから、これ以上簡潔なものはない。
うい。
TDNクイックソートで簡潔だと思ったタイプ。
遅いって分かっててもね。
動作さえ分かれば他の言語で書けるんじゃよ。
そしたら実用的になる。
LL的な使い方なら速度必要無いから、これ以上簡潔なものはない。
188デフォルトの名無しさん
2017/07/03(月) 00:37:29.08ID:wW6TPWna C のコードより haskell のクイックソートのが理解しやすいって
本気で言ってんの?
本気で言ってんの?
189デフォルトの名無しさん
2017/07/03(月) 00:46:37.45ID:MHKU0t6b 妙なハードルつけてそれは本当の理解じゃないとかいうガイジ湧いてきたか?
190デフォルトの名無しさん
2017/07/03(月) 00:49:28.31ID:oRb6DKWl Cのクイックソートも悪くないよな
たった一個の配列を部分部分で触っていくだけ
範囲きめてピボットきめて交換、の繰り返し
メモリの使用に余計なところが無いからスカっとする
たった一個の配列を部分部分で触っていくだけ
範囲きめてピボットきめて交換、の繰り返し
メモリの使用に余計なところが無いからスカっとする
191デフォルトの名無しさん
2017/07/03(月) 08:07:49.86ID:02h+sYLq >>189
空間計算量とか知らない低脳君はアルゴリズムの話しに入ってこないでね
空間計算量とか知らない低脳君はアルゴリズムの話しに入ってこないでね
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国とロシアの爆撃機、日本周辺で共同飛行 [少考さん★]
- 「中国側も日本機のレーダーを感知していた」 中国メディアが報道 [♪♪♪★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- 防衛省、中国を完全論破www 「事前通告があったのは海自であって空自ではない」 高市早苗勝利 [175344491]
- ダイソンのホットアンドクールってどう?
- 高市早苗さん、もう自決でしか許されないレベルになる [402859164]
- 【悲報】JA「全然米が売れなくて倉庫を圧迫してる。助けて!」米卸売り業者「安売りしたら赤字になる…助けて!」 [802034645]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★4 [597533159]
- ✋🏿( ・᷄ὢ・᷅ )朝飯食ってから糞するのは無理でしょ……
