関数型プログラミング言語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/
2デフォルトの名無しさん
垢版 |
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
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
4デフォルトの名無しさん
垢版 |
2020/02/10(月) 18:28:11.16ID:L6eYQqyh
質問すると埋まりそうだったので新スレ立てさせてもらいました

Stringで長さ(文字数)ではなくUTF-8コードとしての総バイト数を知れるような関数はありますか?
2020/02/10(月) 20:12:23.49ID:gQeDR86I
ご苦労さん。関連サイトがやや古くなっている感があるね。
追加

日本Haskellユーザーグループ - Haskell-jp
https://haskell.jp
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
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
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]

簡単な行列で関数を展開してみると何をやっているのかよく分かる。

これ考えたヤツ天才じゃね?
今の俺は他人のソースを展開して理解するので精一杯だけど、
いつかこんな関数定義ができるよう精進したい。
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|
+-+---+-----+------+----+--+
2020/02/11(火) 18:22:03.26ID:RQLUpvMq
畳み込み計算(foldじゃなくてconvolutionの方)とかやりたいときにあると便利かも?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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