「関数を扱えることはどのようにプログラミング言語の能力をあげるか - きしだのはてな」 http://t.co/iRiyZQ0uCa
2013-08-07 21:51:06blog書いた http://t.co/fQXUVz0Foo "関数を扱えるだけでは、モナドを表現するには不十分過ぎる"
2013-08-08 19:26:14そんなこと言い出したら動的型付け言語で「maybeモナドできたよーヽ(゚∀゚)ノ 」とか無邪気に喜んじゃってる人達どうなるんですかー | 関数を扱えるだけでは、モナドを表現するには不十分過ぎる - scalaとか・・・ http://t.co/yYZIQe1Ph0
2013-08-08 20:39:12なんか怖がられてたので「便乗して高階型という概念を説明したかった(それが他の言語にも存在するべきかどうか?は別にして)」「高階型がない言語をdisるのが目的ではなくJava8程度の言語を使うにあたって圏論の知識の不必要性を強調したかった」 と、よくわからない言い訳をしておこう・・
2013-08-08 21:25:31Java を圏論で語る言語にする気は誰もないですよね。「高階関数もないラムダなんて!」とか騒いでる原理主義クラスタでもあるんだろうか。 RT 関数を扱えるだけでは、モナドを表現するには不十分過ぎる - scalaとか・・・ http://t.co/9DQefPSVu7
2013-08-08 21:34:49@igeta Javaで言語として対応してない以上、使えないと思います。そもそもJVMの普通のバイトコードでは、「Scalaの高階型やimplicitを表現できない」ので、Scalaのclassはアノテーションに独自情報埋め込んでますし
2013-08-08 21:23:15@igeta すいません、真面目にやったことないので、すぐに返答はできないですね・・・ちょっと気が向いたら試してみます
2013-08-08 21:26:52@igeta 試してみたらScala側で trait Functor[F[_]] があったときにJavaで Functor<String> a = new Functor<String>(){}; とKindが*であるStringを型引数として渡してもコンパイルできてしまいますね
2013-08-08 21:34:06@igeta @xuwei_k Javaのジェネリクスのイレイジャみたいなもんですかね。JavaVM自身にそういう機能があるわけでなし
2013-08-08 21:38:14たとえば trait Functor[F[_]] に対して classOf[Functor[List]].getTypeParameters.head.getBounds.head とJavaのリフレクションでアクセスしても java.lang.Object が返るだけ
2013-08-08 21:46:46@xuwei_k いえ、ありがとうございます。公開型、F# でいま最も待ち望まれている言語機能だったりするので。F# チーム的には、それ VM(CLR)側で対応すべきやからーってスタンスなのですが、VM 側でなく言語側で対応している Scala ってどうなのと気になったのでした。
2013-08-08 21:34:39