HaskellとScalaの型システムとforall

12
なぎせ ゆうき @nagise

歴史を学ぶならHaskell、現代的な実装を学ぶならScala …?

2013-09-12 19:06:31
しいたけ @yuroyoro

@nagise ScalaとHaskellでは、そもそも方向性が全然ちがうよぅ。Haskellはオブジェクト指向的なクラスベースの型システムがないですし

2013-09-12 19:13:54
なぎせ ゆうき @nagise

@yuroyoro それは知ってるのだけど、ジェネリクス周りではHaskellがよく引き合いに出されるのでそこは抑えておきたいかなあと。HaskellでやれてScalaでできないことってなんだろうとか

2013-09-12 19:16:12
しいたけ @yuroyoro

@nagise 型システム上の制約でぱっと思い付くのは、継承をサポートするが故の型推論の限界ですかね。haskellやocamlは関数の引数の型を省略出来るけどScalaはできない

2013-09-12 19:17:58
しいたけ @yuroyoro

@nagise 型システムの勉強するならこの本は避けて通れない……はず。俺もまだ途中までしか読めてない…

2013-09-12 19:22:42
Takashi Miyamoto @tmiya_

@nagise @yuroyoro Haskellで出来る事と言う時は、Haskell 98というHaskellの標準部分で出来る事を指す時と、様々な言語拡張部分を含んだGHCというHaskellのデファクトスタンダード的な処理系で出来ることと、混同しない様にしないと駄目です。

2013-09-12 19:25:03
しいたけ @yuroyoro

@tmiya_ @nagise おっしゃるとおりで、GHC拡張まで考慮に入れ始めるともうえらいことになりますね…

2013-09-12 19:26:06
なぎせ ゆうき @nagise

@yuroyoro @tmiya_ ぐぬぬ。興味があるのは型システムでどういうパラダイムを持てば何ができるかというところなんですけどね。

2013-09-12 19:27:29
Takashi Miyamoto @tmiya_

@nagise なので、HaskellもGHC最新機能を追っかけていると、色々Scala同様に色々な新機能が有ったり、それ故のカオスさみたいなものがあったりします。逆にHaskell 98の範囲内だけでHaskellしてると確かに歴史みたいな感じもあるかも。

2013-09-12 19:28:03
Kenji Yoshida @xuwei_k

.@nagise @yuroyoro 値が多相になれないというかHaskellのforallが直接表現できないので、Haskell版のこれ https://t.co/3ORDiACCeV をScalaで書くとこんなに長く、とか https://t.co/15YaZQprls

2013-09-12 19:29:14
Takashi Miyamoto @tmiya_

@nagise @yuroyoro うーむ。そういうことだと、TAPL, ATTAPLと読んで勉強して、そのあとは論文読んで、になってしまうのではないですかねぇ。。。あるいはとりあえず http://t.co/OoglCn9DBE を読んで済ますとか。。。

2013-09-12 19:34:27
kmizu @kmizu

HaskellもScalaも両方学べば楽しいと思う でも、GHC拡張は追いきれなくて何がなにやら

2013-09-12 19:34:47
しいたけ @yuroyoro

@xuwei_k @nagise forallよくわからんのですよね……。

2013-09-12 19:39:02
ねこはる @halcat0x15a

@yuroyoro @xuwei_k @nagise Scalaで型パラメータをとる関数はメソッド型でしか定義できませんが、Haskellのforallがあれば値型として扱えるのですよー

2013-09-12 19:46:47
kmizu @kmizu

@tmiya_ @nagise @yuroyoro TAPLはともかくどう考えてもATTAPLは入門向けじゃないのでどうなんだろう。

2013-09-12 19:54:51
Takashi Miyamoto @tmiya_

@kmizu @nagise @yuroyoro いやまぁ、何が出来るのかについて最新の論文まで読める様になりたいなら、TAPL -> ATTAPL と進めば充分なのかなぁ、みたいな。

2013-09-12 19:58:11
kmizu @kmizu

@halcat0x15a @yuroyoro @xuwei_k @nagise あれ?Haskell 2010ってforallサポートしてましたっけ?

2013-09-12 19:58:13
kmizu @kmizu

@halcat0x15a @yuroyoro @xuwei_k @nagise と自分は思ってたんですが、実は違いましたっけ? {-# LANGUAGE RankNTypes #-}. は GHCのpragmaだと思い込んでた。

2013-09-12 20:02:28
病気の美少女 @lyrical_logical

これ rankN 多相のこと指してるのか let 多相相当のこと指してるのかわからない、scala は両方無理

2013-09-12 20:14:51
Kenji Yoshida @xuwei_k

書いた http://t.co/5ByUQZsx96 "Scalaz の NaturalTransformation"

2013-09-12 20:20:11
shelarcy(しぇらーしぃ) @shelarcy

@kmizu @halcat0x15a @nagise @xuwei_k @yuroyoro forall のサポート状況は、言語の規格や処理系によってまちまちなので、そこが混乱の原因になっているかもしれません。

2013-09-12 20:28:03
shelarcy(しぇらーしぃ) @shelarcy

@kmizu @halcat0x15a @nagise @xuwei_k @yuroyoro とりあえず、 型変数を(明示的に)forall で修飾できるようなるだけなのが Haskell2014(予定)で http://t.co/5EzdDHc6jk

2013-09-12 20:33:21