妄想

多値について本気で考えてみた

先日のエントリの反応として、多値の批判をしているように受け取られた方がいました。 実際には、多値の批判をしているのではなく、Go言語の「多値とそう見えるけど違うものがある」という仕様を批判したものでした。 また、タプルにこだわっているという受…

コレクション (List, Set, Map 等) の生成の簡略化

Java SE 7 ではなんかコレクション用のリテラルが入るとか入らないとかあるみたいだけど、個人的には別にそこまで欲しくはない (もし導入されればおいしくいただきますよ?)。 マップリテラルは欲しい。いや、やっぱりそこまで欲しくない (もし導入されれば…

SQL Server に望むこと その 1

SQL Server は文字列の連結に「+」を使ってるんだから、文字列の繰り返しに「*」が使えて欲しい。 REPLICATE 関数とかいらない。 SQL Server は文字列の連結に「+」を使ってるんだから、SUM に文字列渡せるようになって欲しい。 再帰 CTE とかだるい。 ただ…

流れるようなインターフェイス書いてて思ったこと

流れるようなインターフェイス書いてて、「これメソッドのグルーピングに使えるんじゃね?」って思った。 例えば Visual Studio でも Eclipse でも、補完機能って平坦なリストなんだよね。 オーバーロードは一つにまとめてくれるけど、似たような名前のメソ…

KeyValuePairリテラル

static な可変長引数のインデクサから更に妄想して、KeyValuePairリテラルとか考えてみた。 KeyValuePair<int, int> pair1 = 10:10; KeyValuePair<int, KeyValuePair<int, int>> pair2 = 10:20:30; さらに、 (int:int) pair1 = 10:10; (int:int:int) pair2 = 10:20:30; とか。 static な可変長引数</int,></int,>…

可変長引数のインデクサって何に使うんだろ・・・

class Program { int this[params int[] args] { get { return args[args.Length - 1]; } } static void main(string[] args) { Program p = new Program(); Console.WriteLine(p[0, 1, 2, 3]); // => 3 } } うーん、何に使えるだろ?例えばこんなの? publi…

そもそもの原因は Java なんじゃないか?

上の問題だけど、そもそもの原因は Java の文字型である char が 16 bit であることが原因なんじゃないだろうか。 Java だけに問題があるとは言えないけど、Java は良くも悪くも、結構な影響を他の言語・人・環境等に与えているのは確かだし・・・ まぁ、一…

SQL に FOLD があれば・・・

便利だと思うんだ*1 *2。 例えば、 -- 総積を求める SELECT n.FOLD(*, 1) FROM SomeTable; -- 文字列を全部結合 SELECT str.FOLD(||, '') FROM SomeTable; みたいな。 第二引数を省略すると一番最初の要素が使われる*3とかすると、上の例は -- 総積を求める …

プリミティブ型だからといって特別扱いする必要はない・・・と、思う

仮想マシンがプリミティブ型を特別扱いしてるからと言って、その上に乗っている言語でプリミティブ型を特別扱いする必要なんてない。 どういうことかというと、 int i = 0; String str = i.toString(); なんてことが出来ても何も問題はない*1。 プリミティブ…

null許容型をまねて、null不可能型とかを妄想してみた

null許容型は、値型なのにnullを格納できる型で、C#ではこう書く。 int? i = null; // nullが格納できる! これと同じ考え方で、参照型なのにnullを格納できない型とかあると便利じゃね?と言うことで、どんな感じになるのか以下妄想。 null許容型は値型の末…