[過去ログ] 関数型プログラミング言語Haskell Part33 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(1): 2020/02/10(月)18:17 ID:L6eYQqyh(1/5) AAS
関数型プログラミング言語 Haskell について語るスレです。

Haskell Language(公式サイト)
外部リンク:www.haskell.org
日本Haskellユーザーグループ - Haskell-jp
外部リンク:haskell.jp

前スレ
関数型プログラミング言語Haskell Part32
2chスレ:tech
2: 2020/02/10(月)18:18 ID:L6eYQqyh(2/5) AAS
過去スレ一覧
31) 2chスレ:tech
30) 2chスレ:tech
29) 2chスレ:tech
28) 2chスレ:tech
27) 2chスレ:tech
26) 2chスレ:tech
25) 2chスレ:tech
24) 2chスレ:tech
23) 2chスレ:tech
22) 2chスレ:tech
21) 2chスレ:tech
20) 2chスレ:tech
19) 2chスレ:tech
18) 2chスレ:tech
17) 2chスレ:tech
16) 2chスレ:tech
15) 2chスレ:tech
14) 2chスレ:tech
13) 2chスレ:tech
12) 2chスレ:tech
11) 2chスレ:tech
10) 2chスレ:tech
09) 2chスレ:tech
08) 2chスレ:tech
07) 2chスレ:tech
06) 2chスレ:tech
05) 2chスレ:tech
04) 2chスレ:tech
03) 2chスレ:tech
02) 2chスレ:tech
01) 2chスレ:tech
3: 2020/02/10(月)18:18 ID:L6eYQqyh(3/5) AAS
関連サイト
(英語)
Haskell - Wikibooks, open books for an open world (ページ内に内容をまとめたPDFあり)
外部リンク:en.wikibooks.org

Learn You a Haskell for Great Good! (『すごいHaskellたのしく学ぼう!』の無料オンライン版)
外部リンク:learnyouahaskell.com

Real World Haskell (同名書籍の無料オンライン版)
外部リンク:book.realworldhaskell.org

(以下、日本語)
Haskell入門 5ステップ - HaskellWiki (公式サイト内、日本語入門セクション)
外部リンク:wiki.haskell.org

Haskell - Wikibooks (上記Wikibooksの同タイトル日本語版。多くの項目が未編集)
外部リンク:ja.wikibooks.org

A Gentle Introduction to Haskell, Version 98
外部リンク:www.sampou.org

Haskell のお勉強
外部リンク:www.shido.info

お気楽 Haskell プログラミング入門
外部リンク[html]:www.nct9.ne.jp

本物のプログラマはHaskellを使う
外部リンク:itpro.nikkeibp.co.jp

[入門]関数プログラミング―質の高いコードをすばやく直感的に書ける!
外部リンク:gihyo.jp
4
(1): 2020/02/10(月)18:28 ID:L6eYQqyh(4/5) AAS
質問すると埋まりそうだったので新スレ立てさせてもらいました

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

日本Haskellユーザーグループ - Haskell-jp
外部リンク:haskell.jp
6
(1): 2020/02/10(月)20:13 ID:gQeDR86I(2/2) AAS
>>4
:set -XOverloadedStrings
import Data.Text.Lazy (Text)
import Data.Text.Lazy.Encoding (encodeUtf8)
import Data.ByteString.Lazy (unpack)
length . unpack . encodeUtf8 $ ("あ" :: Text )
-- 3
7: 2020/02/10(月)21:23 ID:L6eYQqyh(5/5) AAS
>>6
ありがとうございます!

>>5
リンク切れは修正したのですが全くお気楽じゃないページにリンクしてしまいましたwww

お気楽 Haskell プログラミング入門
外部リンク[html]:www.nct9.ne.jp

お気楽 Haskell プログラミング入門
外部リンク[html]:www.nct9.ne.jp
8: 2020/02/10(月)22:24 ID:qtoUvtqH(1) AAS
haskellはオワコンなの?
9
(3): 2020/02/11(火)11:04 ID:GjzPGqUa(1) AAS
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]

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

これ考えたヤツ天才じゃね?
今の俺は他人のソースを展開して理解するので精一杯だけど、
いつかこんな関数定義ができるよう精進したい。
10: 2020/02/11(火)13:36 ID:TiXBKsVJ(1) AAS
>>9
こんな関数いつ使うん?
11: 2020/02/11(火)14:18 ID:d+YF7kv3(1) AAS
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|
+-+---+-----+------+----+--+
12: 2020/02/11(火)18:22 ID:RQLUpvMq(1) AAS
畳み込み計算(foldじゃなくてconvolutionの方)とかやりたいときにあると便利かも?
13: 2020/02/12(水)08:25 ID:5WxWkSHH(1) AAS
昔話Project Eulerをhaskellで解くのに同じ役割の関数を自作した記憶がある
14: 2020/02/12(水)13:37 ID:1ZV1cGD2(1) AAS
そもそも天才じゃないとやりたいことが出来ない言語ってどうなんだ
15: 2020/02/12(水)13:53 ID:MDE/KJVl(1) AAS
別に他の言語でも10倍量書けば同じことが出来るんだから使わなければいいだけ
共同作業の時は困るから天才だけでチーム組んでもらえばいい
16
(1): 2020/02/12(水)14:24 ID:B2qV6LKd(1) AAS
凡才も天才もほぼ同様に書けるpythonのような素晴らしい言語より、
凡才でも拙く書けるけど天才ならシンプルに書けるhaskellのような素人お断りな言語の方が好き。

魔法みたいで中二心をくすぐられるし、学ぶ意欲がわく。

まぁ、仕事の道具としては迷わず前者を使うけど。
17
(1): 2020/02/12(水)20:45 ID:DqzYUQ+/(1) AAS
>>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の場合、
プログラミング言語自体が解くための問題になっている感じ。
1-
あと 985 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.019s