関数型プログラミング言語Haskell Part31©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/09/27(水) 02:33:08.70ID:2XAqPuH2
関数型プログラミング言語 Haskell について語るスレです。

haskell.org (公式サイト)
https://www.haskell.org/

前スレ
関数型プログラミング言語Haskell Part30
http://mevius.2ch.net/test/read.cgi/tech/1484491434/
2017/11/23(木) 06:11:27.29ID:S1VTy0fD
(->) は?
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)によって、それを含む全体がスーパーコンビネータではないこよになる。

スーパーコンビネータの定義ないし必要十分条件を示してないと減点するのが普通。
2017/11/23(木) 09:13:02.72ID:GxHnNEoE
表記ちょっとミスったけどまあ分かるでしょ
2017/11/23(木) 09:16:33.82ID:GxHnNEoE
ああ……

(2)Eに現れる「すべての」ラムダ抽象がスーパーコンビネータであるとき、

だ。肝腎のとこが抜けてる……寝よう……
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.
と説明されてますが、これは嘘なのですか?
2017/11/26(日) 00:11:02.93ID:6YUjT6hC
>>308
それだと

¥x y -> (x + y)

ですらsupercombinatorにならんよ
2017/11/26(日) 01:59:13.32
むむむ…
(x+y)に現れる全てのラムダ抽象とはなんですか?
2017/11/26(日) 07:38:30.34ID:6YUjT6hC
>>310
この場合、(x+y)にはラムダ抽象が現れていないので条件(2)は空虚に充足されている
あとは条件(1)も充足されてるから、スーパーコンビネータになる
2017/11/26(日) 12:17:18.61ID:qOXUNg+f
>>308
subexpressionの定義が曖昧だな
例えば \ y -> x は \ x y -> x のsubexpressionか?
2017/11/26(日) 13:55:44.55ID:VpgSp9ND
純粋関数型どころか関数型言語のTDD本が無いのですが、
Java用に書かれた本に載っている方法論のどは、
Haskell で TDD を行う際にも取り入れられる事は多いですか?

例えば最近出た「テスト駆動開発」(Kent Beck著)など。
最初の方をチラ読みしたところ、大変読みやい印象を受けたので、
参考になればいいなと思いましたが、どうでしょうか。
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 関数の定義は修正しなくても良いようにしたいのですが、方法はあるでしょうか。
要するに、パターンマッチにおいてデータコンストラクタ名のみマッチングテストをしたいのですが・・・
2017/11/27(月) 00:32:04.34ID:4PKE/tcf
>>314
言語拡張 PatternSynonyms,RecordWildCards を使うといけるようだよ。

pattern D1_ <- D1 {..}
pattern D2_ <- D2 {..}

として、後は t1@D1_ t2@D1_ のようにパターンマッチして利用する。
2017/11/27(月) 00:44:20.26ID:ZVUfUGVW
ていうか、 拡張使わなくても空レコードでパターンマッチできたはず

smallerThan (D1{}) (D1{})

みたいに。
2017/11/27(月) 00:51:37.87ID:ZVUfUGVW
ほれ
https://paiza.io/projects/EKoIGfBN48OP_bZZW2qlug
2017/11/27(月) 07:38:07.20ID:ysH8mXge
なるほど、空レコードでマッチングできる事を知りませんでした。
ありがとうございました。
2017/12/02(土) 10:21:44.75ID:SLnkjfbB
ある名前の型がどのモジュールで定義されているのか、
あるいはまだ定義されていないのかを hoogle で調べる事は出来るでしょうか?
2017/12/02(土) 10:53:38.35ID:pAxOhb0h
実際に hoogle つかってみりゃいいじゃないか
2017/12/02(土) 12:27:16.11ID:SLnkjfbB
>>320
すみません、かなり恥ずかしい勘違いをしていました。
できました。
2017/12/06(水) 00:26:39.18ID:4CiAHXyH
tanakhにはもっとhaskellの話をしてほしいよ
2017/12/06(水) 00:47:59.63ID:IlK1069D
haskellよりrust
2017/12/06(水) 05:28:21.98
tanakhには今だけはPEZYの話聞きたい
2017/12/07(木) 18:59:33.65ID:HvbKuO/f
GHCで、モナドの各インスタンスの(>>=)関数などの、型ではなく実装を見たい場合はどこを見ればいいのでしょうか
特にIOモナドが気になってます
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 見ればいい。
2017/12/07(木) 20:10:53.27ID:RO0W0ydd
https://hackage.haskell.org/package/base-4.10.1.0/docs/src/GHC.Base.html

要するにこれね。
2017/12/07(木) 20:30:31.60ID:g7/WaViS
>>326
>>327
おお、ありがとうございます
重ね重ね申し訳ないのですが、これによるとIOモナドの(>>=)はbindIOでbindIOは
bindIO :: IO a -> (a -> IO b) -> IO b
bindIO (IO m) k = IO (\ s -> case m s of (# new_s, a #) -> unIO (k a) new_s)
となっているのですが、ここでcase式を使っているのはどういった意図があるのでしょうか
letと同じ使い方ですか?
2017/12/08(金) 00:03:17.81ID:Xz8G+NtW
caseは先に式を評価してからパターンに含まれる変数を束縛する

でもletには再帰があるかもしれないから先に変数束縛する
その変数を含むかもしれない式は遅延評価する
2017/12/08(金) 00:12:07.08ID:Hb+0BqaU
>>329
なるほど、そうだったんですね
勉強になりました、ありがとうございます
2017/12/09(土) 22:36:37.66ID:rGCS9XaY
Stack の LTS 9.17 に repa って無いのな
2017/12/10(日) 00:28:18.35ID:61nYDsc2
rapeならあるかも
333デフォルトの名無しさん
垢版 |
2017/12/13(水) 13:00:04.55ID:BNG1q+wP
stackでパッケージをインストールする時にコンパイルしなくなったって話を聞いたけど本当ですか?
バイナリをダウンロードしてインストールするみたいな?
化石スペックの俺のパソコンで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
2017/12/16(土) 19:22:25.34ID:6IhxD8vU
abc予想の解決で再び圏論が注目を浴びそうだ
336デフォルトの名無しさん
垢版 |
2017/12/16(土) 19:57:24.58ID:L7fV5ivU
Haskell->圏論って流れはあるけど
圏論やっててHaskellに興味を持つ人もいるのかな
2017/12/16(土) 21:07:33.28
圏論が何に役立つのか知らんけど、苦労して学んだ人が振り上げた拳の行き場が見当たらなくて
たまたま目についたHaskellをぶん殴ったんじゃないの
それは道端の石ころを蹴っ飛ばすように
2017/12/16(土) 21:27:51.46ID:eb/bER4l
数学は案外行き当たりばったりに問題が解決されている
圏論で判明した同型について、ある分野で解決されていて
ある分野においてすっぽ抜けているところがあれば、その問題は解決できるとみなせる
このように現状のとりとめのない数学を整理するために圏論はあると言えるかもしれない
よって圏論自身から新たに得られる情報はあまりないだろう
だからあまり研究も進まない・・・
2017/12/16(土) 22:31:29.81ID:L7fV5ivU
Ekmettさんとかはどういうスタンスなんだろう
2017/12/17(日) 08:25:26.21ID:Rl+JU+bv
圏論自体はものの見方とそのための記号だから、
圏論使ってる時点で、自分の応用分野もってるでしょう。
その場合、
圏論 -> 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
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/
2017/12/20(水) 00:50:37.50ID:L78Bpqe7
まずはお前が騙し取った金返して謝罪しろよ
345デフォルトの名無しさん
垢版 |
2017/12/20(水) 18:40:30.98ID:Qm3pwgEV
tanakhさんはhaskellの日本での普及に貢献された方かもしれませんが
tanakhさんが勤める会社PEZY computingはhaskellとは関係ないのでは
2017/12/20(水) 20:26:50.59
二位じゃダメなんですか陣営に失脚させられたかな
2017/12/20(水) 20:29:03.05ID:WuO+qrMG
初心者なのでtanakhさんって方を知らないのですがどんな方なんですか?
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
2017/12/21(木) 00:42:32.53ID:X50/c3iq
tanakhは簡単に言うとプログラミングが得意な屑
2017/12/21(木) 00:46:16.46ID:53ydh+Pj
>>348
今すごいHaskellの訳者紹介見直したら村主さんのコメントがめっちゃ真面目で泣きそう
大損失だな……
2017/12/21(木) 03:19:48.25
それでは本日の出場者を紹介してまいります。
先ずは田中英行。

tanakhでお馴染みのアカウント名は、大学時代、フルネームだかtanakahだかの取得に、被ったか弾かれたかで妥協してつけたのがその由来です。
高校の時にファミコンだかスーファミだかのエミュレーションソフトをネットワーク対戦可能な機能をつけて開発した(当時ネットワーク対戦機能を持つエミュは世界初)人で
この時学んだだろう、ファミコンの処理の仕様には一家言あり。
京都大学工学部(後期日程で合格)卒、東大院卒
競技プログラミングでは全盛期にTopCoderにてレッドコーダーまで登ったことがあり、
大学時代に大学対抗競技プログラミングの世界大会へ国内代表権を勝ち取って出場歴あり、
その頃知り合ったエリート達と Preferred Infrastructure(PFI) を創業。
後に体調不良で休職しPFIを辞めた後、Haskellで株式を取り扱うソフトウェアを開発するベンチャー(?)に就職も半年強でまた転職。その転職先がPEZY Computingであります。

Twitterではふざけてばかりおりますが、あれは頭のいい人特有の余裕みたいなもので
本当の彼は日夜PEZYのスパコンで最高のパフォーマンスを叩き出して世界ランキングを塗り替えるべく
ループ毎に20ナノ秒を削るカリカリチューニングコードを書き続けている本物のプログラマです
社長の詐欺疑惑の件で社内の様子が新聞に載った際、『5000兆FLOPS欲しい!』のパロネタを壁に掲示していたのも彼の仕業であります

すごいHaskell楽しく学ぼうの翻訳者の一人

夢はこの世からプログラマ(という職を自動化技術によって)消し去ること

猫が大好き。Haskellマスター 田中英行──
2017/12/21(木) 03:46:15.12ID:tLGR8mGR
つよい
2017/12/21(木) 04:49:39.43ID:UMfwMR6Z
京大首席合格(後期)
2017/12/21(木) 06:35:36.91ID:xu21FK50
プログラミングに関係ないプログラマの話は余所でやってほしい
2017/12/21(木) 11:23:12.31ID:hPrP3Uhu
諸君、議論したまえ
2017/12/21(木) 12:28:48.94ID:RWEMpEAi
競プロに出てくるような座標がコロコロ動いたり表を作るような問題をHaskellで上手く解くにはどうしたらいいでしょうか
手続き型では二次元配列を更新しまくればいいのですが
さすがに毎回takeとdropでリストを作り直すのは悪手ですよね?
2017/12/21(木) 12:52:34.50ID:xNbVMOX5
悪手かどうかはコンパイラに聞いてみればいいんだろ
配列を更新しまくったらコンパイルエラーになるのか?
コンパイラが信用できないならLispとかErlangとかを使えばいい
2017/12/21(木) 12:55:55.14ID:tLGR8mGR
関数型っぽく解決するにはどうすればいいかを聞いてるのでは
2017/12/21(木) 12:59:59.71ID:Pje/kUoS
競プロは時間・空間計算量にシビアだから
2017/12/21(木) 13:17:02.58ID:xNbVMOX5
競技プログラミングと関数型プログラミングの両立を目指すのは良いと思うよ
ついでに手続き型と関数型も両立すればもっと良い
2017/12/21(木) 14:20:53.11ID:V2XnJ2N1
C++でギリギリな問題でもない限りMapとかでもいけるけど
Mapで書きやすいかというとそうでもない
2017/12/21(木) 15:30:56.14ID:wep0AD/i
>>356
具体的な例を挙げてくれないか?
363デフォルトの名無しさん
垢版 |
2017/12/21(木) 16:35:55.75ID:X50/c3iq
少なくとも報道をソースとするなら、斎藤社長は「詐欺を働いた」に等しいのよ。
平たく言うと「自分の意思で嘘をついた」と言い換えてもいい。

それを、「開発の失敗」だの「誤りやミス」だのと一緒にしようとする
ぺジー連中が馬鹿だと言ってるのよ。

失敗やミスによるものと、虚偽によるものでは明らかに
社会や法のあつかいが異なる、そんなことも知らないのか、
知ってて敢えて誤魔化そうとしてんのかよぺジーのスパコン馬鹿は、って話。
2017/12/21(木) 18:27:40.50ID:dmM+x8ix
>>363
Haskellと関係ない話だろ
>>354を読めない人か
2017/12/21(木) 18:36:28.75ID:MPWX0Jf6
釣られるな
2017/12/21(木) 19:45:14.05ID:N1FJ2XDr
お前はスレチの馬鹿
2017/12/21(木) 20:21:25.77ID:6NVAqFid
最近毛の壁みないな
2017/12/22(金) 06:04:00.73ID:Zf+4IlSz
>>367
あの情熱はぜひとも獲得したいと思っているのですが…
2017/12/22(金) 12:35:38.59ID:xKTA0owB
情熱だけで正しい知識が伴ってないとダメ
2017/12/22(金) 12:46:49.98ID:PrEChj7V
f = reverse . reverse

main = print $ f [1..10]

みたいに書いたときって、reverse関数が2回実行されますか?
結果が変わらないからされないですか?
2017/12/22(金) 13:27:52.08ID:xKTA0owB
そのままではされてしまいます。しかしメタプログラミングを用いて reverse . reverse を 静的に除去可能です
2017/12/22(金) 13:46:49.38ID:pcrnJTeB
そういう除去って、reverseは逆順だっていう知識をアプリオリに与えておくの?
それとも定義から解析して無意味じゃんって判断できるの?
2017/12/22(金) 15:11:53.84ID:cEn+RgaZ
RULES プラグマです。
2017/12/22(金) 16:02:02.05ID:pcrnJTeB
りょ。
サンクス
2017/12/22(金) 16:36:48.40ID:GFPkoNql
>>371
ありがとうございます
さすがに出来ないだろと思ってたんですが方法はあるのですね
プラグマはまだ明るくないのでもっと勉強します
2017/12/22(金) 19:53:35.68ID:6Ry8x8A0
foldl f a . reverse → foldr (flip f) a
みたいなルールはあってもいいかもね
reverse = foldl (flip (:)) [] だから
reverse . reverse == foldr (:) [] == id
後者の変換はghc標準でflipは簡約で消えると思う
377デフォルトの名無しさん
垢版 |
2017/12/23(土) 14:41:19.28ID:9K72DzOx
pezyは嘘ついて補助金だまし取って、一部を私的に流用したから逮捕されたのに、
まるで開発が計画通り進まなかったから逮捕されたかのように
印象操作しているから悪質
2017/12/23(土) 15:19:44.84ID:97OmZxF2
べつに誰も何も言ってないだろ
おまいがそう解釈しただけでは
2017/12/23(土) 15:21:59.98ID:Jhot/ru+
Haskellと関係ない話なんだよな
2017/12/23(土) 16:45:07.96ID:UP/Zv3hx
Haskell で開発されたアプリケーションのソースで、こういう形のものがある。

---[ Main.hs ]---
module Main where
import Application (runApp)

main :: IO ()
main = runApp

---[ Application.hs ]---
module Application (runApp) where

runApp :: IO ()
runApp = do
 ほりゃらら

つまり、Main モジュールにはできるだけ何も書かず、別のモジュールに仕事を移譲している。
中には runApp 関数を一つ持つ Application クラスと、そのインスタンス型が一つだけ定義されている事もある。

このような実装の runApp 関数が実際に担っているロールはどれもアプリのエントリポイントだ。
しかし、これはまさに main 関数のロールではないだろうか。
main 関数が本来担う仕事を他の関数に丸投げする事にどのような意味やメリットがあるのだろうか。
2017/12/23(土) 17:10:50.49ID:E55wgL+K
PEZYのスレ立ててそっちでやってください
382デフォルトの名無しさん
垢版 |
2017/12/23(土) 17:47:20.71ID:RG/9qhez
>>380
runAppとは別の処理をrunAppの前後に入れるときにmainに書き足すだけで楽とかじゃね?
383デフォルトの名無しさん
垢版 |
2017/12/23(土) 19:57:22.35ID:deN0FCLD
おれはmainに直接書くわ。Haskell以外でもそうしてる。
2017/12/23(土) 20:06:53.43ID:ZaJB/ccT
stackで新規プロジェクト作成するとmainからsomeFuncに飛んでるよね
2017/12/23(土) 20:30:46.09
そう…(無関心)
2017/12/23(土) 22:07:15.33ID:ePD34LgC
Advent Calendar催促おばさんが面白い
2017/12/23(土) 23:15:34.86ID:nlPzuvyg
>>380
runAppの処理を別のモジュールやアプリに組み込みたいとき、名前がmainだと困る、とか
2017/12/23(土) 23:54:48.18ID:UP/Zv3hx
>>382
楽かどうかという視点ならば、前後に入れるだけなら、
その手間は runApp 関数の中に入れるのと同程度ではないか?

別の処理だからという視点ならば、確かに一見理にかなっていそうたが、
アプリが立ち上がった直後、エントリポイントのロールよりも前に仕事をするものとは、
いったいどのようなロールなのだろう?
私が見てきたアプリでは、runApp 関数の中でコマンドライン解析や設定ファイルの読み込み、
ログシステムの構築なども行っていた。
要するにアプリを動かす準備だ。
準備をする前にすべき事とは?


>>387
runApp 関数内にそのアプリ専用のエントリポイントが書かれたものしか見たことがなく、
それを別のモジュールやアプリに組み込むという状況が想像できないのだが、
具体的にどういう事なのだろう?
その場合、関数名が main だとなぜ困るのだろう?
389デフォルトの名無しさん
垢版 |
2017/12/24(日) 02:26:59.79ID:0qLezeKt
>>378
社員が総出でtwitterで開発が上手くいかなかったから詐欺にされたって
デマ流しまくっているじゃん
2017/12/24(日) 07:27:03.02
最近毛の壁みないな
2017/12/24(日) 13:10:48.98ID:L0WbVZsM
壁毛ならマ板にスレあるよ
392デフォルトの名無しさん
垢版 |
2017/12/25(月) 01:09:51.28ID:KmZOPanU
pythonにはxonshとかいうシェル言語があるらしい
http://vaaaaaanquish.hatenablog.com/entry/2017/11/30/175236
これのHaskellバージョンがあれば便利じゃないか。
Haskellとの親和性は高いと思う。シェルスクリプトって要はコマンドのコンビネータだし、コマンド呼び出しの構文は関数適用によく似てる。
2017/12/25(月) 01:12:38.31ID:KmZOPanU
ただ、ls -a -l -d hoobar みたいなのをシームレスに書くのはチャレンジングな課題だ。
引数の文字列リテラルのリストなどをコマンドラインにイチイチ打ち込むのは面倒くさい。
RebindableSyntaxでマイナスを定義し直して、、いや、悪手っぽいか。
なるべくHaskellを書いていきたい。いちばん身近なところを置き換えられたなら、とても良い。
2017/12/25(月) 05:14:44.74ID:/fea/C1E
haskellバージョンのイメージわかないけど
haskellシェルは何がどう便利になるというの?
2017/12/25(月) 12:02:29.99ID:EPafu7oO
pythonの真似だから便利さもpythonと同じになる計画なんだろ
同じにならなかったら、計画通りに行動しなかった奴が戦犯で、計画立てた奴は無罪
2017/12/25(月) 12:28:50.13ID:F9gRwc9o
Haskellシェルだとhsshとかになるん?
397デフォルトの名無しさん
垢版 |
2017/12/26(火) 01:06:43.66ID:ntWKYT9z
シェルスクリプトを使えばいいと思う
なぜコマンドの実行にHaskellを使う必要があるのか
2017/12/26(火) 11:29:24.52ID:zQBvuC0m
まあconfigureスクリプトにはm4とかいうプリプロセッサがあるから意外と難しいよな
399デフォルトの名無しさん
垢版 |
2017/12/29(金) 04:23:00.56ID:PWPZaOro
EzoeがいつHaskellに飽きて堂々とディスり始めるのか楽しみ
2017/12/29(金) 05:30:43.56ID:dUewwmlf
ガチC++erから見たHaskellというのに少し興味が湧いている
2017/12/29(金) 05:56:52.00ID:xARFptR0
仕様壊れてるC++に慣らされきった人間にHaskellの厳格さの価値がわかるのかねぇ
静的型不要論的な妄言吐きそう
2017/12/29(金) 13:11:23.08
江添っぽさがふんだんに盛り込まれていてよい
2018/01/01(月) 12:12:22.18ID:bFOlOWpA
この人は本当にプログラム書けるのかと不安になることがあるよな。
はっきり言ってc++普及に関しては逆効果をあげてるとしか思えん。
2018/01/01(月) 16:00:21.64ID:pGnY0Ifz
芸人だと思って見てるわ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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