関数型プログラミング言語 Haskell について語るスレです。
haskell.org (公式サイト)
https://www.haskell.org/
前スレ
関数型プログラミング言語Haskell Part30
http://mevius.2ch.net/test/read.cgi/tech/1484491434/
探検
関数型プログラミング言語Haskell Part31©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/09/27(水) 02:33:08.70ID:2XAqPuH2
270デフォルトの名無しさん
2017/11/18(土) 13:59:18.87ID:5lmMR8NZ 再帰はいいんだけど関数定義をトップレベルに並べるとまるでgotoのように見える
しかしletは使うな、caseは使うなという人もいるから
消去法で高階関数かな
しかしletは使うな、caseは使うなという人もいるから
消去法で高階関数かな
271デフォルトの名無しさん
2017/11/18(土) 17:01:09.59ID:Sb0VMRtj 再帰と言えば、今 haskell.org のサイトのトップにある prime の定義って素敵だよね。
こういう宣言的で自己説明的なプログラムが普段のコードでも書けるように精進したい。
こういう宣言的で自己説明的なプログラムが普段のコードでも書けるように精進したい。
272デフォルトの名無しさん
2017/11/18(土) 19:18:50.08ID:+f9/gyau 以下で、なぜエラーが出るのかがわからないです。
import Data.Typeable
f :: (Show a, Typeable a) => a -> String
f a = if typeOf a == typeRep (Proxy :: Proxy String) then a else show a
以下のようにすると、なぜかうまくいきます。
f a = if typeOf a == typeRep (Proxy :: Proxy String) then read $ show a else show a
import Data.Typeable
f :: (Show a, Typeable a) => a -> String
f a = if typeOf a == typeRep (Proxy :: Proxy String) then a else show a
以下のようにすると、なぜかうまくいきます。
f a = if typeOf a == typeRep (Proxy :: Proxy String) then read $ show a else show a
273デフォルトの名無しさん
2017/11/18(土) 20:12:39.81ID:Sb0VMRtj >>272
前者で then a else show a としているから、a は String 型でしかありえない。
一方、型シグネチャにより、a は String 型以外の型も認めている。
矛盾している。
試しに前者を、型シグネチャを書かずに関数定義だけ書いて、ghci の :t で型を調べてみよう。
次回から、エラーの内容も書こう。
前者で then a else show a としているから、a は String 型でしかありえない。
一方、型シグネチャにより、a は String 型以外の型も認めている。
矛盾している。
試しに前者を、型シグネチャを書かずに関数定義だけ書いて、ghci の :t で型を調べてみよう。
次回から、エラーの内容も書こう。
274デフォルトの名無しさん
2017/11/19(日) 00:17:21.62ID:K9yRHYlu そこにエラーを出してくれるのがHaskellの良い所
動かす前に叱ってくれるって素晴らしい
動かす前に叱ってくれるって素晴らしい
275デフォルトの名無しさん
2017/11/19(日) 07:14:38.53ID:gzKE6jPG >>273
ありがとうございます
ありがとうございます
276デフォルトの名無しさん
2017/11/19(日) 14:34:38.43ID:Sx00JERW277デフォルトの名無しさん
2017/11/19(日) 17:33:53.76ID:FtsW9SXJ ちゃんと書くとこんな感じになる
primes = 2:(section [3..] composites)
where
composites = union [multiples p |p<-primes]
multiples n = map (n*) [n..]
section (x:xs) (y:ys)
| x < y = x : (section xs (y:ys))
| x == y = section xs ys
| x > y = section (x:xs) ys
union = foldr merge []
where
merge (x:xs) ys = x:merge' xs ys
merge' (x:xs) (y:ys)
| x < y = x : merge' xs (y:ys)
| x == y = x : merge' xs ys
| x > y = y : merge' (x:xs) ys
primes = 2:(section [3..] composites)
where
composites = union [multiples p |p<-primes]
multiples n = map (n*) [n..]
section (x:xs) (y:ys)
| x < y = x : (section xs (y:ys))
| x == y = section xs ys
| x > y = section (x:xs) ys
union = foldr merge []
where
merge (x:xs) ys = x:merge' xs ys
merge' (x:xs) (y:ys)
| x < y = x : merge' xs (y:ys)
| x == y = x : merge' xs ys
| x > y = y : merge' (x:xs) ys
278デフォルトの名無しさん
2017/11/19(日) 20:38:10.15ID:21tWIVgE >>277
かっこいいコードだけど
省ける計算が多い分まだ試し割の方が速いんだな
primes = 2 : filter isPrime [3..]
isPrime x = all ((/=0) . (x`mod`)) $ takeWhile ((<=x) . (^2)) primes
数が大きくなればmodのコストが問題になるのかもしれないけど
かっこいいコードだけど
省ける計算が多い分まだ試し割の方が速いんだな
primes = 2 : filter isPrime [3..]
isPrime x = all ((/=0) . (x`mod`)) $ takeWhile ((<=x) . (^2)) primes
数が大きくなればmodのコストが問題になるのかもしれないけど
279デフォルトの名無しさん
2017/11/19(日) 20:53:42.98ID:CsMCJwUW >>278
かっこいいの? どの辺りが魅力的なん?
かっこいいの? どの辺りが魅力的なん?
280デフォルトの名無しさん
2017/11/19(日) 20:54:52.08ID:FtsW9SXJ 一応言っとくと >>277 はRichard Bird がよくあるヴァージョンを批判されてきちんと篩を書いたコード
281デフォルトの名無しさん
2017/11/19(日) 21:08:29.23ID:21tWIVgE >>279
modを使わない所がお洒落
modを使わない所がお洒落
282デフォルトの名無しさん
2017/11/19(日) 21:13:45.49ID:aWoSpo3i でも解りにくいじゃん!
Haskell知らなくても何をしてるか
勝手に分かってしまうコードが宣伝用には理想
そういう視点でも
メモ化フィボナッチコードは神コードだね
Haskell知らなくても何をしてるか
勝手に分かってしまうコードが宣伝用には理想
そういう視点でも
メモ化フィボナッチコードは神コードだね
283デフォルトの名無しさん
2017/11/19(日) 22:01:10.75ID:3wAGigTa フィボナッチってどこで使う場面があるのさ?競プロ?
284デフォルトの名無しさん
2017/11/19(日) 22:04:47.47ID:CsMCJwUW285デフォルトの名無しさん
2017/11/19(日) 22:31:12.52ID:FtsW9SXJ 「あの本」?
286デフォルトの名無しさん
2017/11/20(月) 09:32:22.51ID:2YC1SjJx f1 = (map f1' [0..] !!)
where
f1' 0 = a
f1' n =〜
の形は
f2 n = foldl' f2' a [1..n]
where
f2' n =〜
より分かりやすい。
import Data.List (foldl')という
余計なインポートが不要なのが最高。
where
f1' 0 = a
f1' n =〜
の形は
f2 n = foldl' f2' a [1..n]
where
f2' n =〜
より分かりやすい。
import Data.List (foldl')という
余計なインポートが不要なのが最高。
287デフォルトの名無しさん
2017/11/20(月) 10:30:22.80ID:ybEAOaLd ghcコマンドやghciコマンドの出力メッセージの中で、
引用符が倍角文字になってるんだけど、これ半角に設定できないかな。
ターミナルで使ってるフォントの関係でかなり読みにくい。
引用符が倍角文字になってるんだけど、これ半角に設定できないかな。
ターミナルで使ってるフォントの関係でかなり読みにくい。
288デフォルトの名無しさん
2017/11/20(月) 19:19:15.77ID:i6dwbdTS わかりやすいもなにも map で畳み込み計算をどうやって書くつもりなんだろ
できなくはないけど余再帰使うはずで、そうなればもう map とかそういう問題ではない
というかscanlをmapで再実装するのがそんな最高なのかしら……
できなくはないけど余再帰使うはずで、そうなればもう map とかそういう問題ではない
というかscanlをmapで再実装するのがそんな最高なのかしら……
289デフォルトの名無しさん
2017/11/20(月) 23:56:42.78ID:POIf14n/ foo (x:xs) = 〜(なんか関数)〜 (x:xs)
と
foo a@(x:xs) = 〜(なんか関数)〜 a
と
したとき、前者と後者は内部的に処理違ったりする?
と
foo a@(x:xs) = 〜(なんか関数)〜 a
と
したとき、前者と後者は内部的に処理違ったりする?
290デフォルトの名無しさん
2017/11/21(火) 08:36:28.75ID:jCVIG8Yh291デフォルトの名無しさん
2017/11/21(火) 11:49:36.85ID:Zx2Txvw4292デフォルトの名無しさん
2017/11/21(火) 14:03:16.67293デフォルトの名無しさん
2017/11/21(火) 17:45:32.32ID:Ftr24wOW C++ちゃんってあれだろ?
「ブーストかけるぜ」なCちゃんの別人格
Haskellちゃんも見たかったなぁ…
「ブーストかけるぜ」なCちゃんの別人格
Haskellちゃんも見たかったなぁ…
294デフォルトの名無しさん
2017/11/21(火) 19:32:07.35ID:Egb8Rv0R295デフォルトの名無しさん
2017/11/21(火) 20:06:56.72ID:NQH8f0G2 バイナリでは違いが出たよ
296デフォルトの名無しさん
2017/11/22(水) 00:50:08.76ID:ovFpIkAx コンパイル時刻
297デフォルトの名無しさん
2017/11/22(水) 09:20:37.07ID:CArcd2ol f (x:xs) = (x:xs) → case 引数 of _ -> x : xs
g a@(x:xs) = a →
だと
g a@(x:xs) = a →
だと
298デフォルトの名無しさん
2017/11/22(水) 09:28:04.15ID:CArcd2ol ミスった
ghci -ddump-simplだと
f (x:xs) = (x:xs) → case 引数 of _ { (x:xs) -> x:xs }
g a@(x:xs) = a → case 引数 of a { (x:xs) -> a }
みたいなのが出力されたけど・・・
ghci -ddump-simplだと
f (x:xs) = (x:xs) → case 引数 of _ { (x:xs) -> x:xs }
g a@(x:xs) = a → case 引数 of a { (x:xs) -> a }
みたいなのが出力されたけど・・・
299デフォルトの名無しさん
2017/11/22(水) 10:01:50.65ID:KMROYMtU やってみた
https://ideone.com/6r6LpA
@パターンは不可反駁なんで、少しだけ違うね
9行目と31行目で a は不可反駁なんでワイルド扱い
15行目と37行目もまさに同じ点が違う
https://ideone.com/6r6LpA
@パターンは不可反駁なんで、少しだけ違うね
9行目と31行目で a は不可反駁なんでワイルド扱い
15行目と37行目もまさに同じ点が違う
300デフォルトの名無しさん
2017/11/22(水) 10:27:32.10ID:DL3EaaUj stackoverflowで聞けば識者が的確に答えてくれそう
301デフォルトの名無しさん
2017/11/22(水) 18:10:15.64ID:ovFpIkAx 最適化で消えるだろう
302デフォルトの名無しさん
2017/11/23(木) 04:31:10.10 《問》(配点 10点)
\n -> 1 + n
\f n -> f 1 n
\f -> f 1 . (\g n -> g 2 n)
らはスーパーコンビネータである。しかし、
\f g -> f 1 . (\n -> g 2 n)
はスーパーコンビネータではない。何故か?
《ぼくの解答》
g がラムダ抽象のスコープ外で束縛されており、そのスコープにおいて自由変数である。
従ってこのラムダ抽象は閉じた項ではないのでコンビネータではない。
コンビネータでも定数でもないのでこのラムダ抽象はスーパーコンビネータではない。
全体としては、定数でなく、されどコンビネータではあるが、その内部にスーパーコンビネータでないものを含んでいるのでスーパーコンビネータではない。
何点貰えますか?
\n -> 1 + n
\f n -> f 1 n
\f -> f 1 . (\g n -> g 2 n)
らはスーパーコンビネータである。しかし、
\f g -> f 1 . (\n -> g 2 n)
はスーパーコンビネータではない。何故か?
《ぼくの解答》
g がラムダ抽象のスコープ外で束縛されており、そのスコープにおいて自由変数である。
従ってこのラムダ抽象は閉じた項ではないのでコンビネータではない。
コンビネータでも定数でもないのでこのラムダ抽象はスーパーコンビネータではない。
全体としては、定数でなく、されどコンビネータではあるが、その内部にスーパーコンビネータでないものを含んでいるのでスーパーコンビネータではない。
何点貰えますか?
303デフォルトの名無しさん
2017/11/23(木) 04:34:25.61 訂正(一行目)
× g がラムダ抽象の〜
○ g が括弧内のラムダ抽象の〜
× g がラムダ抽象の〜
○ g が括弧内のラムダ抽象の〜
304デフォルトの名無しさん
2017/11/23(木) 06:11:27.29ID:S1VTy0fD (->) は?
305デフォルトの名無しさん
2017/11/23(木) 09:12:04.55ID:GxHnNEoE >>302
¥n1 n2 … -> E
がスーパーコンビネータであるのは
(1)Eに出現する自由変数が n1〜n2 だけであって、かつ、
(2)Eに現れるラムダ抽象がスーパーコンビネータであるとき、
そしてそのときに限る。
¥f g -> f 1 . (¥n -> g 2 n)
の場合、 ¥n -> g 2 n は g が(1)を満たさないのでスーパーコンビネータではなく、
したがって(2)によって、それを含む全体がスーパーコンビネータではないこよになる。
スーパーコンビネータの定義ないし必要十分条件を示してないと減点するのが普通。
¥n1 n2 … -> E
がスーパーコンビネータであるのは
(1)Eに出現する自由変数が n1〜n2 だけであって、かつ、
(2)Eに現れるラムダ抽象がスーパーコンビネータであるとき、
そしてそのときに限る。
¥f g -> f 1 . (¥n -> g 2 n)
の場合、 ¥n -> g 2 n は g が(1)を満たさないのでスーパーコンビネータではなく、
したがって(2)によって、それを含む全体がスーパーコンビネータではないこよになる。
スーパーコンビネータの定義ないし必要十分条件を示してないと減点するのが普通。
306デフォルトの名無しさん
2017/11/23(木) 09:13:02.72ID:GxHnNEoE 表記ちょっとミスったけどまあ分かるでしょ
307デフォルトの名無しさん
2017/11/23(木) 09:16:33.82ID:GxHnNEoE ああ……
(2)Eに現れる「すべての」ラムダ抽象がスーパーコンビネータであるとき、
だ。肝腎のとこが抜けてる……寝よう……
(2)Eに現れる「すべての」ラムダ抽象がスーパーコンビネータであるとき、
だ。肝腎のとこが抜けてる……寝よう……
308デフォルトの名無しさん
2017/11/25(土) 23:17:22.88 >>305
Haskell High Performance Programming には、
A supercombinator is either a constant, say 1.5 or ['a'..'z'], or a combinator whose subexpressions are supercombinators.
と説明されてますが、これは嘘なのですか?
Haskell High Performance Programming には、
A supercombinator is either a constant, say 1.5 or ['a'..'z'], or a combinator whose subexpressions are supercombinators.
と説明されてますが、これは嘘なのですか?
309デフォルトの名無しさん
2017/11/26(日) 00:11:02.93ID:6YUjT6hC310デフォルトの名無しさん
2017/11/26(日) 01:59:13.32 むむむ…
(x+y)に現れる全てのラムダ抽象とはなんですか?
(x+y)に現れる全てのラムダ抽象とはなんですか?
311デフォルトの名無しさん
2017/11/26(日) 07:38:30.34ID:6YUjT6hC312デフォルトの名無しさん
2017/11/26(日) 12:17:18.61ID:qOXUNg+f313デフォルトの名無しさん
2017/11/26(日) 13:55:44.55ID:VpgSp9ND 純粋関数型どころか関数型言語のTDD本が無いのですが、
Java用に書かれた本に載っている方法論のどは、
Haskell で TDD を行う際にも取り入れられる事は多いですか?
例えば最近出た「テスト駆動開発」(Kent Beck著)など。
最初の方をチラ読みしたところ、大変読みやい印象を受けたので、
参考になればいいなと思いましたが、どうでしょうか。
Java用に書かれた本に載っている方法論のどは、
Haskell で TDD を行う際にも取り入れられる事は多いですか?
例えば最近出た「テスト駆動開発」(Kent Beck著)など。
最初の方をチラ読みしたところ、大変読みやい印象を受けたので、
参考になればいいなと思いましたが、どうでしょうか。
314デフォルトの名無しさん
2017/11/26(日) 23:25:24.41ID:k9PNaQXG 次の型があるとします。
data T = D1 {d1a :: Int, d1b :: String} | D2 {d2a :: Char, d2b :: Double, d2c :: Integer}
同じデータコンストラクタ由来の値同士の比較関数を次のように作るとします。
smallerThan :: T -> T -> Bool
smallerThan t1@(D1 _ _) t2@(D1 _ _) = d1b t1 <= d1b t2
smallerThan t1@(D2 _ _ _) t2@(D2 _ _ _) = (d2b t1, d2c t1) <= (d2b t2, d2c t2)
smallerThan _ _ = undefined
これを、D1 や D2 の定義内のフィールドの順を変えたり、フィールドの数が変わったりしても、
smallerThan 関数の定義は修正しなくても良いようにしたいのですが、方法はあるでしょうか。
要するに、パターンマッチにおいてデータコンストラクタ名のみマッチングテストをしたいのですが・・・
data T = D1 {d1a :: Int, d1b :: String} | D2 {d2a :: Char, d2b :: Double, d2c :: Integer}
同じデータコンストラクタ由来の値同士の比較関数を次のように作るとします。
smallerThan :: T -> T -> Bool
smallerThan t1@(D1 _ _) t2@(D1 _ _) = d1b t1 <= d1b t2
smallerThan t1@(D2 _ _ _) t2@(D2 _ _ _) = (d2b t1, d2c t1) <= (d2b t2, d2c t2)
smallerThan _ _ = undefined
これを、D1 や D2 の定義内のフィールドの順を変えたり、フィールドの数が変わったりしても、
smallerThan 関数の定義は修正しなくても良いようにしたいのですが、方法はあるでしょうか。
要するに、パターンマッチにおいてデータコンストラクタ名のみマッチングテストをしたいのですが・・・
315デフォルトの名無しさん
2017/11/27(月) 00:32:04.34ID:4PKE/tcf >>314
言語拡張 PatternSynonyms,RecordWildCards を使うといけるようだよ。
pattern D1_ <- D1 {..}
pattern D2_ <- D2 {..}
として、後は t1@D1_ t2@D1_ のようにパターンマッチして利用する。
言語拡張 PatternSynonyms,RecordWildCards を使うといけるようだよ。
pattern D1_ <- D1 {..}
pattern D2_ <- D2 {..}
として、後は t1@D1_ t2@D1_ のようにパターンマッチして利用する。
316デフォルトの名無しさん
2017/11/27(月) 00:44:20.26ID:ZVUfUGVW ていうか、 拡張使わなくても空レコードでパターンマッチできたはず
smallerThan (D1{}) (D1{})
みたいに。
smallerThan (D1{}) (D1{})
みたいに。
317デフォルトの名無しさん
2017/11/27(月) 00:51:37.87ID:ZVUfUGVW318デフォルトの名無しさん
2017/11/27(月) 07:38:07.20ID:ysH8mXge なるほど、空レコードでマッチングできる事を知りませんでした。
ありがとうございました。
ありがとうございました。
319デフォルトの名無しさん
2017/12/02(土) 10:21:44.75ID:SLnkjfbB ある名前の型がどのモジュールで定義されているのか、
あるいはまだ定義されていないのかを hoogle で調べる事は出来るでしょうか?
あるいはまだ定義されていないのかを hoogle で調べる事は出来るでしょうか?
320デフォルトの名無しさん
2017/12/02(土) 10:53:38.35ID:pAxOhb0h 実際に hoogle つかってみりゃいいじゃないか
321デフォルトの名無しさん
2017/12/02(土) 12:27:16.11ID:SLnkjfbB322デフォルトの名無しさん
2017/12/06(水) 00:26:39.18ID:4CiAHXyH tanakhにはもっとhaskellの話をしてほしいよ
323デフォルトの名無しさん
2017/12/06(水) 00:47:59.63ID:IlK1069D haskellよりrust
324デフォルトの名無しさん
2017/12/06(水) 05:28:21.98 tanakhには今だけはPEZYの話聞きたい
325デフォルトの名無しさん
2017/12/07(木) 18:59:33.65ID:HvbKuO/f GHCで、モナドの各インスタンスの(>>=)関数などの、型ではなく実装を見たい場合はどこを見ればいいのでしょうか
特にIOモナドが気になってます
特にIOモナドが気になってます
326デフォルトの名無しさん
2017/12/07(木) 20:09:35.72ID:RO0W0ydd https://hackage.haskell.org/package/base-4.10.1.0/docs/System-IO.html#t:IO
IO の instances の中から Monad IO 選んで各演算子の source 見ればいい。
IO の instances の中から Monad IO 選んで各演算子の source 見ればいい。
327デフォルトの名無しさん
2017/12/07(木) 20:10:53.27ID:RO0W0ydd328デフォルトの名無しさん
2017/12/07(木) 20:30:31.60ID:g7/WaViS329デフォルトの名無しさん
2017/12/08(金) 00:03:17.81ID:Xz8G+NtW caseは先に式を評価してからパターンに含まれる変数を束縛する
でもletには再帰があるかもしれないから先に変数束縛する
その変数を含むかもしれない式は遅延評価する
でもletには再帰があるかもしれないから先に変数束縛する
その変数を含むかもしれない式は遅延評価する
330デフォルトの名無しさん
2017/12/08(金) 00:12:07.08ID:Hb+0BqaU331デフォルトの名無しさん
2017/12/09(土) 22:36:37.66ID:rGCS9XaY Stack の LTS 9.17 に repa って無いのな
332デフォルトの名無しさん
2017/12/10(日) 00:28:18.35ID:61nYDsc2 rapeならあるかも
333デフォルトの名無しさん
2017/12/13(水) 13:00:04.55ID:BNG1q+wP stackでパッケージをインストールする時にコンパイルしなくなったって話を聞いたけど本当ですか?
バイナリをダウンロードしてインストールするみたいな?
化石スペックの俺のパソコンでshellcheckのインストールで8時間以上かかった悪夢は解消されるの?
バイナリをダウンロードしてインストールするみたいな?
化石スペックの俺のパソコンでshellcheckのインストールで8時間以上かかった悪夢は解消されるの?
334デフォルトの名無しさん
2017/12/13(水) 13:14:20.26ID:PKyEd910 【葬儀】たくさんの人があっけなく死んでいく
https://rio2016.5ch.net/test/read.cgi/sousai/1511694073/l50
【応報】藤原さやか『放射脳は恥ずかしい』→急死w
https://medaka.5ch.net/test/read.cgi/csaloon/1511952872/l50
【内乱罪】フクイチで核ミサイルを製造していた疑惑
http://rio2016.5ch.net/test/read.cgi/disaster/1511410332/l50
https://rio2016.5ch.net/test/read.cgi/sousai/1511694073/l50
【応報】藤原さやか『放射脳は恥ずかしい』→急死w
https://medaka.5ch.net/test/read.cgi/csaloon/1511952872/l50
【内乱罪】フクイチで核ミサイルを製造していた疑惑
http://rio2016.5ch.net/test/read.cgi/disaster/1511410332/l50
335デフォルトの名無しさん
2017/12/16(土) 19:22:25.34ID:6IhxD8vU abc予想の解決で再び圏論が注目を浴びそうだ
336デフォルトの名無しさん
2017/12/16(土) 19:57:24.58ID:L7fV5ivU Haskell->圏論って流れはあるけど
圏論やっててHaskellに興味を持つ人もいるのかな
圏論やっててHaskellに興味を持つ人もいるのかな
337デフォルトの名無しさん
2017/12/16(土) 21:07:33.28 圏論が何に役立つのか知らんけど、苦労して学んだ人が振り上げた拳の行き場が見当たらなくて
たまたま目についたHaskellをぶん殴ったんじゃないの
それは道端の石ころを蹴っ飛ばすように
たまたま目についたHaskellをぶん殴ったんじゃないの
それは道端の石ころを蹴っ飛ばすように
338デフォルトの名無しさん
2017/12/16(土) 21:27:51.46ID:eb/bER4l 数学は案外行き当たりばったりに問題が解決されている
圏論で判明した同型について、ある分野で解決されていて
ある分野においてすっぽ抜けているところがあれば、その問題は解決できるとみなせる
このように現状のとりとめのない数学を整理するために圏論はあると言えるかもしれない
よって圏論自身から新たに得られる情報はあまりないだろう
だからあまり研究も進まない・・・
圏論で判明した同型について、ある分野で解決されていて
ある分野においてすっぽ抜けているところがあれば、その問題は解決できるとみなせる
このように現状のとりとめのない数学を整理するために圏論はあると言えるかもしれない
よって圏論自身から新たに得られる情報はあまりないだろう
だからあまり研究も進まない・・・
339デフォルトの名無しさん
2017/12/16(土) 22:31:29.81ID:L7fV5ivU Ekmettさんとかはどういうスタンスなんだろう
340デフォルトの名無しさん
2017/12/17(日) 08:25:26.21ID:Rl+JU+bv 圏論自体はものの見方とそのための記号だから、
圏論使ってる時点で、自分の応用分野もってるでしょう。
その場合、
圏論 -> universal algebra
圏論 -> functional programming
圏論 -> categorical stochastic relations
圏論 -> haskell
のように興味の対象が増える程度でhaskellだということに意味はなさそう。
圏論的アプローチは他の言語でもライブラリ群いろいろあるしね。
圏論使ってる時点で、自分の応用分野もってるでしょう。
その場合、
圏論 -> universal algebra
圏論 -> functional programming
圏論 -> categorical stochastic relations
圏論 -> haskell
のように興味の対象が増える程度でhaskellだということに意味はなさそう。
圏論的アプローチは他の言語でもライブラリ群いろいろあるしね。
341デフォルトの名無しさん
2017/12/19(火) 05:44:21.31ID:LTRWN5XC プログラム・プロムナード/Haskellプログラミング-情報処理学会
http://www.ipsj.or.jp/magazine/promenade.html
http://www.ipsj.or.jp/magazine/promenade.html
342デフォルトの名無しさん
2017/12/19(火) 13:25:55.10ID:fHF/6Dd9 bakeの開発が終了したようですが、
同じ趣旨のライブラリは他にありますか?
同じ趣旨のライブラリは他にありますか?
343デフォルトの名無しさん
2017/12/19(火) 23:53:10.07ID:IjOdIEt7 この会社って言うたらそこまでの規模じゃないだろうし実態もよく分かってない感じなのに
なんつーか、『ある傾向の人間性』の社員が現時点ですら目立ち過ぎだろ…
こぃぬ㌠ @Altalinux
スパコンに詳しくない人間がスパコンを語って
つい昨日PEZYを知ったような人間が補助金やら助成金やらを語るんですねえ地獄のような構図ですねえ
Hideyuki Tanaka @tanakh
まじで特捜は「詳しい技術者」が「使い物にならないスパコン」に「巨額の資金」が流れてるというタレコミだけで、
オッそれは絶対におかしいなとか先走ったけど、調べても思ったようなのが出てこなくて困ってるんじゃないのか。
山田てるみ @telmin_orca
つまりこの件は、アベガーとかカネノナガレガーとか言っておけば良いのであって、
技術的にどうとか言った瞬間に全力で殴られる案件だということだ
Hishinuma @Hishinuma_t
例のPEZYが100億円不正受給の記事が何の謝罪もなく差し変わっている。
http://www.data-max.co.jp/291219_dm1545_2/ …
なんつーか、『ある傾向の人間性』の社員が現時点ですら目立ち過ぎだろ…
こぃぬ㌠ @Altalinux
スパコンに詳しくない人間がスパコンを語って
つい昨日PEZYを知ったような人間が補助金やら助成金やらを語るんですねえ地獄のような構図ですねえ
Hideyuki Tanaka @tanakh
まじで特捜は「詳しい技術者」が「使い物にならないスパコン」に「巨額の資金」が流れてるというタレコミだけで、
オッそれは絶対におかしいなとか先走ったけど、調べても思ったようなのが出てこなくて困ってるんじゃないのか。
山田てるみ @telmin_orca
つまりこの件は、アベガーとかカネノナガレガーとか言っておけば良いのであって、
技術的にどうとか言った瞬間に全力で殴られる案件だということだ
Hishinuma @Hishinuma_t
例のPEZYが100億円不正受給の記事が何の謝罪もなく差し変わっている。
http://www.data-max.co.jp/291219_dm1545_2/ …
344デフォルトの名無しさん
2017/12/20(水) 00:50:37.50ID:L78Bpqe7 まずはお前が騙し取った金返して謝罪しろよ
345デフォルトの名無しさん
2017/12/20(水) 18:40:30.98ID:Qm3pwgEV tanakhさんはhaskellの日本での普及に貢献された方かもしれませんが
tanakhさんが勤める会社PEZY computingはhaskellとは関係ないのでは
tanakhさんが勤める会社PEZY computingはhaskellとは関係ないのでは
346デフォルトの名無しさん
2017/12/20(水) 20:26:50.59 二位じゃダメなんですか陣営に失脚させられたかな
347デフォルトの名無しさん
2017/12/20(水) 20:29:03.05ID:WuO+qrMG 初心者なのでtanakhさんって方を知らないのですがどんな方なんですか?
348デフォルトの名無しさん
2017/12/21(木) 00:28:08.74ID:vVg09BnX tanakhさんは『すごい Haskell たのしく学ぼう!』の翻訳者の1人の田中英行さんのハンドルネームだよ https://twitter.com/tanakh
ちなみにもう1人の翻訳者の村主崇行さんは今年亡くなられた http://www.asj.or.jp/tennet/archives/msg07622.html
ちなみにもう1人の翻訳者の村主崇行さんは今年亡くなられた http://www.asj.or.jp/tennet/archives/msg07622.html
349デフォルトの名無しさん
2017/12/21(木) 00:42:32.53ID:X50/c3iq tanakhは簡単に言うとプログラミングが得意な屑
350デフォルトの名無しさん
2017/12/21(木) 00:46:16.46ID:53ydh+Pj351デフォルトの名無しさん
2017/12/21(木) 03:19:48.25 それでは本日の出場者を紹介してまいります。
先ずは田中英行。
tanakhでお馴染みのアカウント名は、大学時代、フルネームだかtanakahだかの取得に、被ったか弾かれたかで妥協してつけたのがその由来です。
高校の時にファミコンだかスーファミだかのエミュレーションソフトをネットワーク対戦可能な機能をつけて開発した(当時ネットワーク対戦機能を持つエミュは世界初)人で
この時学んだだろう、ファミコンの処理の仕様には一家言あり。
京都大学工学部(後期日程で合格)卒、東大院卒
競技プログラミングでは全盛期にTopCoderにてレッドコーダーまで登ったことがあり、
大学時代に大学対抗競技プログラミングの世界大会へ国内代表権を勝ち取って出場歴あり、
その頃知り合ったエリート達と Preferred Infrastructure(PFI) を創業。
後に体調不良で休職しPFIを辞めた後、Haskellで株式を取り扱うソフトウェアを開発するベンチャー(?)に就職も半年強でまた転職。その転職先がPEZY Computingであります。
Twitterではふざけてばかりおりますが、あれは頭のいい人特有の余裕みたいなもので
本当の彼は日夜PEZYのスパコンで最高のパフォーマンスを叩き出して世界ランキングを塗り替えるべく
ループ毎に20ナノ秒を削るカリカリチューニングコードを書き続けている本物のプログラマです
社長の詐欺疑惑の件で社内の様子が新聞に載った際、『5000兆FLOPS欲しい!』のパロネタを壁に掲示していたのも彼の仕業であります
すごいHaskell楽しく学ぼうの翻訳者の一人
夢はこの世からプログラマ(という職を自動化技術によって)消し去ること
猫が大好き。Haskellマスター 田中英行──
先ずは田中英行。
tanakhでお馴染みのアカウント名は、大学時代、フルネームだかtanakahだかの取得に、被ったか弾かれたかで妥協してつけたのがその由来です。
高校の時にファミコンだかスーファミだかのエミュレーションソフトをネットワーク対戦可能な機能をつけて開発した(当時ネットワーク対戦機能を持つエミュは世界初)人で
この時学んだだろう、ファミコンの処理の仕様には一家言あり。
京都大学工学部(後期日程で合格)卒、東大院卒
競技プログラミングでは全盛期にTopCoderにてレッドコーダーまで登ったことがあり、
大学時代に大学対抗競技プログラミングの世界大会へ国内代表権を勝ち取って出場歴あり、
その頃知り合ったエリート達と Preferred Infrastructure(PFI) を創業。
後に体調不良で休職しPFIを辞めた後、Haskellで株式を取り扱うソフトウェアを開発するベンチャー(?)に就職も半年強でまた転職。その転職先がPEZY Computingであります。
Twitterではふざけてばかりおりますが、あれは頭のいい人特有の余裕みたいなもので
本当の彼は日夜PEZYのスパコンで最高のパフォーマンスを叩き出して世界ランキングを塗り替えるべく
ループ毎に20ナノ秒を削るカリカリチューニングコードを書き続けている本物のプログラマです
社長の詐欺疑惑の件で社内の様子が新聞に載った際、『5000兆FLOPS欲しい!』のパロネタを壁に掲示していたのも彼の仕業であります
すごいHaskell楽しく学ぼうの翻訳者の一人
夢はこの世からプログラマ(という職を自動化技術によって)消し去ること
猫が大好き。Haskellマスター 田中英行──
352デフォルトの名無しさん
2017/12/21(木) 03:46:15.12ID:tLGR8mGR つよい
353デフォルトの名無しさん
2017/12/21(木) 04:49:39.43ID:UMfwMR6Z 京大首席合格(後期)
354デフォルトの名無しさん
2017/12/21(木) 06:35:36.91ID:xu21FK50 プログラミングに関係ないプログラマの話は余所でやってほしい
355デフォルトの名無しさん
2017/12/21(木) 11:23:12.31ID:hPrP3Uhu 諸君、議論したまえ
356デフォルトの名無しさん
2017/12/21(木) 12:28:48.94ID:RWEMpEAi 競プロに出てくるような座標がコロコロ動いたり表を作るような問題をHaskellで上手く解くにはどうしたらいいでしょうか
手続き型では二次元配列を更新しまくればいいのですが
さすがに毎回takeとdropでリストを作り直すのは悪手ですよね?
手続き型では二次元配列を更新しまくればいいのですが
さすがに毎回takeとdropでリストを作り直すのは悪手ですよね?
357デフォルトの名無しさん
2017/12/21(木) 12:52:34.50ID:xNbVMOX5 悪手かどうかはコンパイラに聞いてみればいいんだろ
配列を更新しまくったらコンパイルエラーになるのか?
コンパイラが信用できないならLispとかErlangとかを使えばいい
配列を更新しまくったらコンパイルエラーになるのか?
コンパイラが信用できないならLispとかErlangとかを使えばいい
358デフォルトの名無しさん
2017/12/21(木) 12:55:55.14ID:tLGR8mGR 関数型っぽく解決するにはどうすればいいかを聞いてるのでは
359デフォルトの名無しさん
2017/12/21(木) 12:59:59.71ID:Pje/kUoS 競プロは時間・空間計算量にシビアだから
360デフォルトの名無しさん
2017/12/21(木) 13:17:02.58ID:xNbVMOX5 競技プログラミングと関数型プログラミングの両立を目指すのは良いと思うよ
ついでに手続き型と関数型も両立すればもっと良い
ついでに手続き型と関数型も両立すればもっと良い
361デフォルトの名無しさん
2017/12/21(木) 14:20:53.11ID:V2XnJ2N1 C++でギリギリな問題でもない限りMapとかでもいけるけど
Mapで書きやすいかというとそうでもない
Mapで書きやすいかというとそうでもない
362デフォルトの名無しさん
2017/12/21(木) 15:30:56.14ID:wep0AD/i >>356
具体的な例を挙げてくれないか?
具体的な例を挙げてくれないか?
363デフォルトの名無しさん
2017/12/21(木) 16:35:55.75ID:X50/c3iq 少なくとも報道をソースとするなら、斎藤社長は「詐欺を働いた」に等しいのよ。
平たく言うと「自分の意思で嘘をついた」と言い換えてもいい。
それを、「開発の失敗」だの「誤りやミス」だのと一緒にしようとする
ぺジー連中が馬鹿だと言ってるのよ。
失敗やミスによるものと、虚偽によるものでは明らかに
社会や法のあつかいが異なる、そんなことも知らないのか、
知ってて敢えて誤魔化そうとしてんのかよぺジーのスパコン馬鹿は、って話。
平たく言うと「自分の意思で嘘をついた」と言い換えてもいい。
それを、「開発の失敗」だの「誤りやミス」だのと一緒にしようとする
ぺジー連中が馬鹿だと言ってるのよ。
失敗やミスによるものと、虚偽によるものでは明らかに
社会や法のあつかいが異なる、そんなことも知らないのか、
知ってて敢えて誤魔化そうとしてんのかよぺジーのスパコン馬鹿は、って話。
364デフォルトの名無しさん
2017/12/21(木) 18:27:40.50ID:dmM+x8ix365デフォルトの名無しさん
2017/12/21(木) 18:36:28.75ID:MPWX0Jf6 釣られるな
366デフォルトの名無しさん
2017/12/21(木) 19:45:14.05ID:N1FJ2XDr お前はスレチの馬鹿
367デフォルトの名無しさん
2017/12/21(木) 20:21:25.77ID:6NVAqFid 最近毛の壁みないな
>>367
あの情熱はぜひとも獲得したいと思っているのですが…
あの情熱はぜひとも獲得したいと思っているのですが…
369デフォルトの名無しさん
2017/12/22(金) 12:35:38.59ID:xKTA0owB 情熱だけで正しい知識が伴ってないとダメ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★2 [BFU★]
- 立憲・野田代表が主張 台湾有事答弁で「質問者批判は筋違い」「答弁がおかしい」「高市総理迎合のネット世論は危険」★4 [♪♪♪★]
- 【千葉】コンビニに尿入りペットボトル並べた疑い、26歳男「むしゃくしゃして」…購入した客が飲もうとしたところ臭いに違和感 [ぐれ★]
- 中国官製報道「日本経済はもう持たない」にネット民ツッコミ「ニュースだけ見てたら日本はもう百回くらい爆発してる」 [1ゲットロボ★]
- 日中関係悪化で「日本からもうすぐパンダがいなくなる」 中国SNSでトレンド1位に★2 [♪♪♪★]
- 【STARTO ENTERTAINMENT】timelesz、メンバーの不適切言動を謝罪「不用意かつモラルに反した発言であった」 全員の署名入りでコメント [Ailuropoda melanoleuca★]
- 【実況】博衣こよりのえちえちホロ分かり手クイズ🧪🏴‍☠🌸 ★2
- 【実況】博衣こよりのえちえちホロ分かり手クイズ🧪🏴‍☠🌸
- 【高市悲報】中国「国連安保理の許可なしに日本を攻撃可能だ」★2 [115996789]
- 【高市悲報】中国「国連安保理の許可なしに日本を攻撃可能だ」 [115996789]
- 報ステ・大越キャスター「高市のせいで日中の深刻化がとまりません、どうかどうか願わくばパンダに影響のないを」涙声で訴え [339712612]
- 安倍晋三(2015)「この状況では武力行使をする、この状況ならしないと手の内を明かす海外のリーダーはいる訳ないじゃないですか」高市「」 [931948549]
