[過去ログ]
関数型プログラミング言語Haskell Part33 (1002レス)
関数型プログラミング言語Haskell Part33 http://mevius.5ch.net/test/read.cgi/tech/1581326256/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
1: デフォルトの名無しさん [] 2020/02/10(月) 18:17:36.49 ID: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/ http://mevius.5ch.net/test/read.cgi/tech/1581326256/1
2: デフォルトの名無しさん [] 2020/02/10(月) 18:18:05.22 ID:L6eYQqyh 過去スレ一覧 31) https://mevius.5ch.net/test/read.cgi/tech/1506447188/ 30) http://mevius.2ch.net/test/read.cgi/tech/1484491434/ 29) http://peace.2ch.net/test/read.cgi/tech/1436869629/ 28) http://peace.2ch.net/test/read.cgi/tech/1428535861/ 27) http://peace.2ch.net/test/read.cgi/tech/1420718555/ 26) http://peace.2ch.net/test/read.cgi/tech/1406436392/ 25) http://peace.2ch.net/test/read.cgi/tech/1393313450/ 24) http://toro.2ch.net/test/read.cgi/tech/1382705669/ 23) http://toro.2ch.net/test/read.cgi/tech/1376111807/ 22) http://toro.2ch.net/test/read.cgi/tech/1364009659/ 21) http://toro.2ch.net/test/read.cgi/tech/1358702176/ 20) http://toro.2ch.net/test/read.cgi/tech/1350428908/ 19) http://toro.2ch.net/test/read.cgi/tech/1340760070/ 18) http://toro.2ch.net/test/read.cgi/tech/1331902463/ 17) http://toro.2ch.net/test/read.cgi/tech/1325510368/ 16) http://toro.2ch.net/test/read.cgi/tech/1317958045/ 15) http://hibari.2ch.net/test/read.cgi/tech/1310199414/ 14) http://hibari.2ch.net/test/read.cgi/tech/1299385928/ 13) http://hibari.2ch.net/test/read.cgi/tech/1286706874/ 12) http://hibari.2ch.net/test/read.cgi/tech/1272536128/ 11) http://pc12.2ch.net/test/read.cgi/tech/1252382593/ 10) http://pc12.2ch.net/test/read.cgi/tech/1231861873/ 09) http://pc11.2ch.net/test/read.cgi/tech/1211010089/ 08) http://pc11.2ch.net/test/read.cgi/tech/1193743693/ 07) http://pc11.2ch.net/test/read.cgi/tech/1174211797/ 06) http://pc11.2ch.net/test/read.cgi/tech/1162902266/ 05) http://pc8.2ch.net/test/read.cgi/tech/1149263630/ 04) http://pc8.2ch.net/test/read.cgi/tech/1140717775/ 03) http://pc8.2ch.net/test/read.cgi/tech/1076418993/ 02) http://pc2.2ch.net/test/read.cgi/tech/1013846140/ 01) http://pc.2ch.net/tech/kako/996/996131288.html http://mevius.5ch.net/test/read.cgi/tech/1581326256/2
3: デフォルトの名無しさん [] 2020/02/10(月) 18:18:27.57 ID:L6eYQqyh 関連サイト (英語) Haskell - Wikibooks, open books for an open world (ページ内に内容をまとめたPDFあり) https://en.wikibooks.org/wiki/Haskell Learn You a Haskell for Great Good! (『すごいHaskellたのしく学ぼう!』の無料オンライン版) http://learnyouahaskell.com/chapters Real World Haskell (同名書籍の無料オンライン版) http://book.realworldhaskell.org/read/ (以下、日本語) Haskell入門 5ステップ - HaskellWiki (公式サイト内、日本語入門セクション) https://wiki.haskell.org/Haskell%E5%85%A5%E9%96%80_5%E3%82%B9%E3%83%86%E3%83%83%E3%83%97 Haskell - Wikibooks (上記Wikibooksの同タイトル日本語版。多くの項目が未編集) https://ja.wikibooks.org/wiki/Haskell A Gentle Introduction to Haskell, Version 98 http://www.sampou.org/haskell/tutorial-j/ Haskell のお勉強 http://www.shido.info/hs/ お気楽 Haskell プログラミング入門 http://www.nct9.ne.jp/m_hiroi/func/haskell39.html 本物のプログラマはHaskellを使う http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248215/ [入門]関数プログラミング―質の高いコードをすばやく直感的に書ける! http://gihyo.jp/dev/feature/01/functional-prog http://mevius.5ch.net/test/read.cgi/tech/1581326256/3
4: デフォルトの名無しさん [] 2020/02/10(月) 18:28:11.16 ID:L6eYQqyh 質問すると埋まりそうだったので新スレ立てさせてもらいました Stringで長さ(文字数)ではなくUTF-8コードとしての総バイト数を知れるような関数はありますか? http://mevius.5ch.net/test/read.cgi/tech/1581326256/4
5: デフォルトの名無しさん [sage] 2020/02/10(月) 20:12:23.49 ID:gQeDR86I ご苦労さん。関連サイトがやや古くなっている感があるね。 追加 日本Haskellユーザーグループ - Haskell-jp https://haskell.jp http://mevius.5ch.net/test/read.cgi/tech/1581326256/5
6: デフォルトの名無しさん [sage] 2020/02/10(月) 20:13:34.39 ID:gQeDR86I >>4 :set -XOverloadedStrings import Data.Text.Lazy (Text) import Data.Text.Lazy.Encoding (encodeUtf8) import Data.ByteString.Lazy (unpack) length . unpack . encodeUtf8 $ ("あ" :: Text ) -- 3 http://mevius.5ch.net/test/read.cgi/tech/1581326256/6
7: デフォルトの名無しさん [sage] 2020/02/10(月) 21:23:34.40 ID:L6eYQqyh >>6 ありがとうございます! >>5 リンク切れは修正したのですが全くお気楽じゃないページにリンクしてしまいましたwww お気楽 Haskell プログラミング入門 http://www.nct9.ne.jp/m_hiroi/func/haskell39.html ↓ お気楽 Haskell プログラミング入門 http://www.nct9.ne.jp/m_hiroi/func/haskell.html http://mevius.5ch.net/test/read.cgi/tech/1581326256/7
8: デフォルトの名無しさん [sage] 2020/02/10(月) 22:24:04.13 ID:qtoUvtqH haskellはオワコンなの? http://mevius.5ch.net/test/read.cgi/tech/1581326256/8
9: デフォルトの名無しさん [sage] 2020/02/11(火) 11:04:03.53 ID:GjzPGqUa universe-base パッケージに Data.Universe.Helpers.diagonals という関数があって、 diagonals [[1,2,3,4], [5,6,7,8], [9,10,11,12]] = [[1], [5,2], [9,6,3], [10,7,4], [11,8], [12]] という、つまり行列を対角線状に走査して並べ直す計算をしてくれる。 で、これの関数定義がかなりシンプルなんだ。 diagonals :: [[a]] -> [[a]] diagonals = tail . go [] where go b es_ = [h | h:_ <- b] : case es_ of [] -> transpose ts e:es -> go (e:ts) es where ts = [t | _:t <- b] 簡単な行列で関数を展開してみると何をやっているのかよく分かる。 これ考えたヤツ天才じゃね? 今の俺は他人のソースを展開して理解するので精一杯だけど、 いつかこんな関数定義ができるよう精進したい。 http://mevius.5ch.net/test/read.cgi/tech/1581326256/9
10: デフォルトの名無しさん [sage] 2020/02/11(火) 13:36:26.72 ID:TiXBKsVJ >>9 こんな関数いつ使うん? http://mevius.5ch.net/test/read.cgi/tech/1581326256/10
11: デフォルトの名無しさん [] 2020/02/11(火) 14:18:49.70 ID:d+YF7kv3 J言語でも同様の操作は用意されている。 ___ a =: >: i. 3 4 1 2 3 4 5 6 7 8 9 10 11 12 ___ </. a +-+---+-----+------+----+--+ |1|2 5|3 6 9|4 7 10|8 11|12| +-+---+-----+------+----+--+ http://mevius.5ch.net/test/read.cgi/tech/1581326256/11
12: デフォルトの名無しさん [sage] 2020/02/11(火) 18:22:03.26 ID:RQLUpvMq 畳み込み計算(foldじゃなくてconvolutionの方)とかやりたいときにあると便利かも? http://mevius.5ch.net/test/read.cgi/tech/1581326256/12
13: デフォルトの名無しさん [sage] 2020/02/12(水) 08:25:26.33 ID:5WxWkSHH 昔話Project Eulerをhaskellで解くのに同じ役割の関数を自作した記憶がある http://mevius.5ch.net/test/read.cgi/tech/1581326256/13
14: デフォルトの名無しさん [sage] 2020/02/12(水) 13:37:04.81 ID:1ZV1cGD2 そもそも天才じゃないとやりたいことが出来ない言語ってどうなんだ http://mevius.5ch.net/test/read.cgi/tech/1581326256/14
15: デフォルトの名無しさん [] 2020/02/12(水) 13:53:42.16 ID:MDE/KJVl 別に他の言語でも10倍量書けば同じことが出来るんだから使わなければいいだけ 共同作業の時は困るから天才だけでチーム組んでもらえばいい http://mevius.5ch.net/test/read.cgi/tech/1581326256/15
16: デフォルトの名無しさん [sage] 2020/02/12(水) 14:24:47.66 ID:B2qV6LKd 凡才も天才もほぼ同様に書けるpythonのような素晴らしい言語より、 凡才でも拙く書けるけど天才ならシンプルに書けるhaskellのような素人お断りな言語の方が好き。 魔法みたいで中二心をくすぐられるし、学ぶ意欲がわく。 まぁ、仕事の道具としては迷わず前者を使うけど。 http://mevius.5ch.net/test/read.cgi/tech/1581326256/16
17: デフォルトの名無しさん [] 2020/02/12(水) 20:45:42.48 ID:DqzYUQ+/ >>9 Rなら同様の関数をもっと短く分かりやすく書ける。 diagonals <- function(A) lapply(2:sum(dim(A)), function(i) A[row(A) + col(A) == i]) diagonals(matrix(1:12, 3, 4, byrow = TRUE)) これで [[1], [5,2], [9,6,3], [10,7,4], [11,8], [12]] というベクトルのリストが 生成される。 >>16 そうだな。プログラミング言語は問題を解くための道具だが、Haskellの場合、 プログラミング言語自体が解くための問題になっている感じ。 http://mevius.5ch.net/test/read.cgi/tech/1581326256/17
18: デフォルトの名無しさん [sage] 2020/02/12(水) 22:22:34.78 ID:ohhYjydu Haskellの書き方極めればC言語に匹敵する速度が出せるって聞いたんだけどマジ? http://mevius.5ch.net/test/read.cgi/tech/1581326256/18
19: デフォルトの名無しさん [sage] 2020/02/13(木) 00:18:51.95 ID:00coYSBu >>18 嘘 http://mevius.5ch.net/test/read.cgi/tech/1581326256/19
20: デフォルトの名無しさん [sage] 2020/02/13(木) 02:31:41.26 ID:7PHqZJTi >>17 短さはともかく解りやすさは一概には言えないと思う。こんなのはどうかな l = take 3 . unfoldr (Just . splitAt 4) $ [1..12] diagonals l = map catMaybes . transpose $ zipWith (<>) (inits . repeat $ Nothing) (map (map Just) l) > プログラミング言語は問題を解くための道具だが、Haskellの場合、 > プログラミング言語自体が解くための問題になっている感じ。 これは言い得ていると思う。Haskell の色んな所に入り込んだ抽象化のおかげで、 従来、アプリを作る末端のプログラマーが各々処理していた仕事が、ライブラリやコンパイラ側に吸い上げられる。 だから全体としての仕事の総量は少なくなる。でもそのかわり、ある程度書けるためにはベースの抽象に慣れる必要がある。 fmapってなに/モナドってなに/Foldableってなに/Lazyってなに... 学習コストは他の言語に比べてずっと高い。 >19 > Haskellの書き方極めればC言語に匹敵する速度が出せる 可能だよ https://chrispenner.ca/posts/wc http://mevius.5ch.net/test/read.cgi/tech/1581326256/20
21: デフォルトの名無しさん [sage] 2020/02/13(木) 04:40:03.75 ID:8j+a4fKo >>20 それ前にも紹介されてて俺もすげーなと思ったが、よく考えると、 じゃあ今wcやlsのようなLinuxコマンドをhaskellで書きたいかと聞かれれば、 べつにいいやと応える。 もっとこう、せめてSwichやPS4のインディーズゲームや、 窓の杜の人気編集ソフトレベルのアプリで、 Cと張り合う猛者は居ないのかな。 Darcsだって肝心の速度ではgitに敵わなかったわけだし。 前に、ブロック崩しでCと比較した人が居たような気がしたが、 どこのページだったかな。 http://mevius.5ch.net/test/read.cgi/tech/1581326256/21
22: デフォルトの名無しさん [sage] 2020/02/13(木) 16:46:02.30 ID:7PHqZJTi >>21 俺はコマンドラインユーティリティを Haskell で作るのイイナって思ってる。 型の恩恵でヘルプとか書き漏らさないし、単純な計算なら自動でコマンド化できるっぽい。 Haskell 製のゲームは何故かとても少ない。こちらとか https://store.steampowered.com/app/591640/Light_It/?l=japanese beatmaniaのような音ゲーを120行で実装するって触れ込みのチュートリアル http://fumieval.github.io/rhythm-game-tutorial/ja.html http://mevius.5ch.net/test/read.cgi/tech/1581326256/22
23: デフォルトの名無しさん [] 2020/02/13(木) 17:49:26.84 ID:0eJoVY/8 >>9 Rubyだと def diagonals(a) m = a.size n = a[0].size a.flatten.group_by.with_index{|v,i| i/m+i%n}.values end http://mevius.5ch.net/test/read.cgi/tech/1581326256/23
24: デフォルトの名無しさん [sage] 2020/02/14(金) 14:43:09.16 ID:3dEdKDtV Haskellで書かれた他人のコードって詠みにくいと思うのは俺だけか? 型クラスやモナドが難しいというより、何がどこで定義されてるかよくわからんし、どういう動作をする関数なのかがぱっと見でわからん。 http://mevius.5ch.net/test/read.cgi/tech/1581326256/24
25: デフォルトの名無しさん [sage] 2020/02/14(金) 16:56:30.18 ID:NyO1b3mL 言語というより、可読性に対する意識の問題だと思うよ みんな薄々読みにくいと思ってるけど、互いに頭悪いと思われてマウント取られるのが怖くて言い出せないから、読みにくいコードはいつまでも読みにくいまま 実用言語では「俺が読めないのは書いた奴が悪い」が基本なので、互いに指摘しあうことで自然と改善されていく http://mevius.5ch.net/test/read.cgi/tech/1581326256/25
26: デフォルトの名無しさん [sage] 2020/02/14(金) 16:59:16.33 ID:ONnLM1s9 >>24 千差万別としか言いようがない。 Github や hackage にあるコードを見ても、分かりやすいものもあれば、そうでないものもある。 CやJava、Python などと比べて、特に差は無いように思えるが。 何かが定義されている場所は同じモジュール内か、さもなくばインポートしているモジュール内なんだから、 検索すれば見つかるでしょ。 よくわからん、という意味がよくわからん。 動作がぱっと見でわからんというのは、それこそhaskellに限った話ではないのでは? 言語の習熟度や、そのコードで解いている問題のジャンルにもよるでしょ。 http://mevius.5ch.net/test/read.cgi/tech/1581326256/26
27: デフォルトの名無しさん [sage] 2020/02/15(土) 10:44:39.37 ID:2OHXNxKd The build process was killed (i.e. SIGKILL). The typical reason for this is that there is not enough memory available (e.g. the OS killed a process using lots of memory). へんなエラーが出来て今までコンパイルできなものが急にできなくなった Haskellは最悪 もう使いたくない http://mevius.5ch.net/test/read.cgi/tech/1581326256/27
28: デフォルトの名無しさん [sage] 2020/02/15(土) 10:58:18.94 ID:ELCuAwaW 頭が悪い奴が作るとすぐメモリ不足になると死んだじっちゃんが言っていた http://mevius.5ch.net/test/read.cgi/tech/1581326256/28
29: デフォルトの名無しさん [sage] 2020/02/15(土) 12:35:42.03 ID:2OHXNxKd テンプレートハスケルをつかったでっかいソースだからなるのかな 一つのファイルコンパイルするのに10分位掛かるんだけど 分割するようにすればなおる? http://mevius.5ch.net/test/read.cgi/tech/1581326256/29
30: デフォルトの名無しさん [sage] 2020/02/15(土) 14:01:44.69 ID:45cVu0dh >>24 問題の関数を使っているモジュールをghciにロードして:iコマンド使えば、 それがどのモジュールで定義されているのか分かるが、 そう言うことではなく? http://mevius.5ch.net/test/read.cgi/tech/1581326256/30
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 972 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.011s