高階型について

ところで "高階型" って言い方が正しいのかよくわからないまま使ってます、すいません
16
ころ @koropicot

型パラメタ取れる型であることを表す制約が書けないからいまやろうとしてることが絶対不可能であることをつきつけられた

2013-08-07 16:39:33
きしだൠ(K1S) @kis

「関数を扱えることはどのようにプログラミング言語の能力をあげるか - きしだのはてな」 http://t.co/iRiyZQ0uCa

2013-08-07 21:51:06
Kenji Yoshida @xuwei_k

blog書いた http://t.co/fQXUVz0Foo "関数を扱えるだけでは、モナドを表現するには不十分過ぎる"

2013-08-08 19:26:14
なぎせ ゆうき @nagise

昔、Javaのジェネリクスでやんちゃした記事が参照されるとおもはゆいですね。

2013-08-08 21:26:04
しいたけ @yuroyoro

そんなこと言い出したら動的型付け言語で「maybeモナドできたよーヽ(゚∀゚)ノ 」とか無邪気に喜んじゃってる人達どうなるんですかー | 関数を扱えるだけでは、モナドを表現するには不十分過ぎる - scalaとか・・・ http://t.co/yYZIQe1Ph0

2013-08-08 20:39:12
いげ太 @igeta

「高階型がないと、モナドとして抽象化や共通化ができない」すなわち F# はモナドが使えないッ!!!

2013-08-08 21:10:00
いげ太 @igeta

こわいわー Scala の人こわいわー(棒

2013-08-08 21:10:45
いげ太 @igeta

高階型とか Java にも C# にもないのに覚える必要あるんですかー?(語尾上げ

2013-08-08 21:14:02
Kenji Yoshida @xuwei_k

なんか怖がられてたので「便乗して高階型という概念を説明したかった(それが他の言語にも存在するべきかどうか?は別にして)」「高階型がない言語をdisるのが目的ではなくJava8程度の言語を使うにあたって圏論の知識の不必要性を強調したかった」 と、よくわからない言い訳をしておこう・・

2013-08-08 21:25:31
なぎせ ゆうき @nagise

圏論の勉強をしなくてはならないが、Java8程度の言語を扱うぐらいなので工学的にな必要性があるのかピンと来ない

2013-08-08 21:27:24
もろ @低規模言語モデル ';DROP TABLE 人生-- @jagd5168

Java を圏論で語る言語にする気は誰もないですよね。「高階関数もないラムダなんて!」とか騒いでる原理主義クラスタでもあるんだろうか。 RT 関数を扱えるだけでは、モナドを表現するには不十分過ぎる - scalaとか・・・ http://t.co/9DQefPSVu7

2013-08-08 21:34:49
いげ太 @igeta

それとして、Scala で作った高階型は Java からも高階型として使えるんですかね。

2013-08-08 21:18:56
Kenji Yoshida @xuwei_k

@igeta Javaで言語として対応してない以上、使えないと思います。そもそもJVMの普通のバイトコードでは、「Scalaの高階型やimplicitを表現できない」ので、Scalaのclassはアノテーションに独自情報埋め込んでますし

2013-08-08 21:23:15
いげ太 @igeta

@xuwei_k すると、Scala で作った高階型を Java から使うときは、どう見えるのでしょう?

2013-08-08 21:25:38
Kenji Yoshida @xuwei_k

@igeta すいません、真面目にやったことないので、すぐに返答はできないですね・・・ちょっと気が向いたら試してみます

2013-08-08 21:26:52
Kenji Yoshida @xuwei_k

@igeta 試してみたらScala側で trait Functor[F[_]] があったときにJavaで Functor<String> a = new Functor<String>(){}; とKindが*であるStringを型引数として渡してもコンパイルできてしまいますね

2013-08-08 21:34:06
いげ太 @igeta

@xuwei_k おー、ありがとうございます。高階型による型の制約・制限が無視される感じ、ですかね。

2013-08-08 21:37:12
zakki @k_matsuzaki

@igeta Eclipse JDT からは型消去された結果だけ見えてたような記憶が

2013-08-08 21:36:51
いげ太 @igeta

@k_matsuzaki Java からは関係ないことにされるって感じですね。

2013-08-08 21:40:00
なぎせ ゆうき @nagise

@igeta @xuwei_k Javaのジェネリクスのイレイジャみたいなもんですかね。JavaVM自身にそういう機能があるわけでなし

2013-08-08 21:38:14
Kenji Yoshida @xuwei_k

たとえば trait Functor[F[_]] に対して classOf[Functor[List]].getTypeParameters.head.getBounds.head とJavaのリフレクションでアクセスしても java.lang.Object が返るだけ

2013-08-08 21:46:46
いげ太 @igeta

@xuwei_k いえ、ありがとうございます。公開型、F# でいま最も待ち望まれている言語機能だったりするので。F# チーム的には、それ VM(CLR)側で対応すべきやからーってスタンスなのですが、VM 側でなく言語側で対応している Scala ってどうなのと気になったのでした。

2013-08-08 21:34:39