関数型プログラミング言語 Haskell について語るスレです。
Haskell Language(公式サイト)
https://www.haskell.org/
日本Haskellユーザーグループ - Haskell-jp
https://haskell.jp/
前スレ
関数型プログラミング言語Haskell Part32
https://mevius.5ch.net/test/read.cgi/tech/1548720347/
探検
関数型プログラミング言語Haskell Part33
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/02/10(月) 18:17:36.49ID:L6eYQqyh2デフォルトの名無しさん
2020/02/10(月) 18:18:05.22ID: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
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
3デフォルトの名無しさん
2020/02/10(月) 18:18:27.57ID: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
(英語)
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
4デフォルトの名無しさん
2020/02/10(月) 18:28:11.16ID:L6eYQqyh 質問すると埋まりそうだったので新スレ立てさせてもらいました
Stringで長さ(文字数)ではなくUTF-8コードとしての総バイト数を知れるような関数はありますか?
Stringで長さ(文字数)ではなくUTF-8コードとしての総バイト数を知れるような関数はありますか?
2020/02/10(月) 20:12:23.49ID:gQeDR86I
2020/02/10(月) 20:13:34.39ID: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
:set -XOverloadedStrings
import Data.Text.Lazy (Text)
import Data.Text.Lazy.Encoding (encodeUtf8)
import Data.ByteString.Lazy (unpack)
length . unpack . encodeUtf8 $ ("あ" :: Text )
-- 3
2020/02/10(月) 21:23:34.40ID: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
ありがとうございます!
>>5
リンク切れは修正したのですが全くお気楽じゃないページにリンクしてしまいましたwww
お気楽 Haskell プログラミング入門
http://www.nct9.ne.jp/m_hiroi/func/haskell39.html
↓
お気楽 Haskell プログラミング入門
http://www.nct9.ne.jp/m_hiroi/func/haskell.html
2020/02/10(月) 22:24:04.13ID:qtoUvtqH
haskellはオワコンなの?
2020/02/11(火) 11:04:03.53ID: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]
簡単な行列で関数を展開してみると何をやっているのかよく分かる。
これ考えたヤツ天才じゃね?
今の俺は他人のソースを展開して理解するので精一杯だけど、
いつかこんな関数定義ができるよう精進したい。
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]
簡単な行列で関数を展開してみると何をやっているのかよく分かる。
これ考えたヤツ天才じゃね?
今の俺は他人のソースを展開して理解するので精一杯だけど、
いつかこんな関数定義ができるよう精進したい。
2020/02/11(火) 13:36:26.72ID:TiXBKsVJ
>>9
こんな関数いつ使うん?
こんな関数いつ使うん?
11デフォルトの名無しさん
2020/02/11(火) 14:18:49.70ID: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|
+-+---+-----+------+----+--+
___ 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|
+-+---+-----+------+----+--+
2020/02/11(火) 18:22:03.26ID:RQLUpvMq
畳み込み計算(foldじゃなくてconvolutionの方)とかやりたいときにあると便利かも?
2020/02/12(水) 08:25:26.33ID:5WxWkSHH
昔話Project Eulerをhaskellで解くのに同じ役割の関数を自作した記憶がある
2020/02/12(水) 13:37:04.81ID:1ZV1cGD2
そもそも天才じゃないとやりたいことが出来ない言語ってどうなんだ
15デフォルトの名無しさん
2020/02/12(水) 13:53:42.16ID:MDE/KJVl 別に他の言語でも10倍量書けば同じことが出来るんだから使わなければいいだけ
共同作業の時は困るから天才だけでチーム組んでもらえばいい
共同作業の時は困るから天才だけでチーム組んでもらえばいい
2020/02/12(水) 14:24:47.66ID:B2qV6LKd
凡才も天才もほぼ同様に書けるpythonのような素晴らしい言語より、
凡才でも拙く書けるけど天才ならシンプルに書けるhaskellのような素人お断りな言語の方が好き。
魔法みたいで中二心をくすぐられるし、学ぶ意欲がわく。
まぁ、仕事の道具としては迷わず前者を使うけど。
凡才でも拙く書けるけど天才ならシンプルに書けるhaskellのような素人お断りな言語の方が好き。
魔法みたいで中二心をくすぐられるし、学ぶ意欲がわく。
まぁ、仕事の道具としては迷わず前者を使うけど。
17デフォルトの名無しさん
2020/02/12(水) 20:45:42.48ID: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の場合、
プログラミング言語自体が解くための問題になっている感じ。
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の場合、
プログラミング言語自体が解くための問題になっている感じ。
2020/02/12(水) 22:22:34.78ID:ohhYjydu
Haskellの書き方極めればC言語に匹敵する速度が出せるって聞いたんだけどマジ?
2020/02/13(木) 00:18:51.95ID:00coYSBu
>>18
嘘
嘘
2020/02/13(木) 02:31:41.26ID: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
短さはともかく解りやすさは一概には言えないと思う。こんなのはどうかな
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
2020/02/13(木) 04:40:03.75ID:8j+a4fKo
>>20
それ前にも紹介されてて俺もすげーなと思ったが、よく考えると、
じゃあ今wcやlsのようなLinuxコマンドをhaskellで書きたいかと聞かれれば、
べつにいいやと応える。
もっとこう、せめてSwichやPS4のインディーズゲームや、
窓の杜の人気編集ソフトレベルのアプリで、
Cと張り合う猛者は居ないのかな。
Darcsだって肝心の速度ではgitに敵わなかったわけだし。
前に、ブロック崩しでCと比較した人が居たような気がしたが、
どこのページだったかな。
それ前にも紹介されてて俺もすげーなと思ったが、よく考えると、
じゃあ今wcやlsのようなLinuxコマンドをhaskellで書きたいかと聞かれれば、
べつにいいやと応える。
もっとこう、せめてSwichやPS4のインディーズゲームや、
窓の杜の人気編集ソフトレベルのアプリで、
Cと張り合う猛者は居ないのかな。
Darcsだって肝心の速度ではgitに敵わなかったわけだし。
前に、ブロック崩しでCと比較した人が居たような気がしたが、
どこのページだったかな。
2020/02/13(木) 16:46:02.30ID: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
俺はコマンドラインユーティリティを Haskell で作るのイイナって思ってる。
型の恩恵でヘルプとか書き漏らさないし、単純な計算なら自動でコマンド化できるっぽい。
Haskell 製のゲームは何故かとても少ない。こちらとか
https://store.steampowered.com/app/591640/Light_It/?l=japanese
beatmaniaのような音ゲーを120行で実装するって触れ込みのチュートリアル
http://fumieval.github.io/rhythm-game-tutorial/ja.html
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 ★2 [お断り★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 [お断り★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★5 [ぐれ★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★4 [BFU★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 [ぐれ★]
- 【悲報】高市早苗さん、もう辞職しか選択肢がない… [271912485]
- 【愛国者速報】フィフィ、中国の“日本産水産物輸入停止”措置に私見「中国依存しないとやっていけない企業は考えを改めて」 [856698234]
- 【ござる専🏡】風間🥷配信実況スレ🏯【風間いろは】
- 中国・環球時報「沖縄は日本領ではないのでは?」高市 [931948549]
- 【速報】中国政府、ゲームを禁輸。原神やブルアカ、荒野行動が日本で影響 [347751896]
- 中国「私達が怒ってるのは日本の政治家に対してで、日本の観光客や日本企業はこれまで通り歓迎する。これこそが大国としての余裕」 [377482965]
