2015-10-01から1ヶ月間の記事一覧

アッカーマン操作

VBA

今読んでいる本 『コンピュータは数学者になれるのか? 数学基礎論から証明とプログラムの理論へ (照井一成)』の155ページに アッカーマン操作 というものが登場した。Ackermann関数の数列版みたいなものである。 非負整数の有限列<...>に対して次のような…

2つの表を比較する

VBA

また人様のネタを頂戴する。 整数からなる列がふたつあり、それぞれ 表A、表B とする。それぞれ片側にしかない数字を抽出しようというものだ。 vbaHaskellで短く書くとこうなる。ただし値ではなく、ある/ないの結果を 1 / 0 で表示した。 ab = unZip(mapF(p…

3つの引数を持つ関数

VBA

VBAHaskellで3つ以上の引数を持つ関数をファンクタ化したい。 APIのレベルでそれをサポートする気は今のところないので、VBA側で簡易的な対応をした。 Haskell_1_Core.bas にそれをサポートする関数 make_funPointer_with_3_parameters を追加した。 'ユーザ…

変数への代入

VBA

VBAで、変数に値を代入してそれを直接別の関数に渡したい。 しかし通常の = による代入を使おうとしたら下記の「方法1」ではダメで、「方法2」のように2行に分ける必要がある。 ' 「方法1」 ? UBound(x = Array(1,2,3)) ' NG、xへの代入ではなく等値比較…

C++14ラムダでの< > テンプレート?

C++

さきほどqiitaに書いた記事、 qiita.com でC++のラムダ式に言及したのだが、よくわからなくなった。 まず、 []<typename T>(T const& a, std::vector<std::vector<T>> const& b){ auto tmp = b; for ( auto& i : tmp ) i.insert(i.begin(), a); tmp.insert(tmp.begin(), std::vector<T>{1, </t></std::vector<t></typename>…