voidもしくはboolを返す

書いているC++プログラムの一か所に出てきた既視感のある部分についての備忘録。 該当部分は次の4行。 struct bool_proxy { explicit operator bool() const { return true; } friend bool operator ,(bool b, const bool_proxy&) { return b; } }; こういう…

配列をQiita表に変換

Excelシートの選択範囲をVBAHaskellの関数を使ってQiitaの表形式に変換。 右の形式でクリップボードに転送して、ブラウザに直接貼り付けられるようにします。 頻繁にやるなら関数化してもいいけど、とりあえずイミディエイトウィンドウだけで。 m = sheet2m(…

place_fill 関数の追加(VBAHaskell)

VBA

VBAHaskellにplace_fill という関数を追加して Haskell_2_stdFun.bas モジュールに置いた。 1次元配列内の指定した複数の位置に関数もしくは定数値を適用して、その場所に値を埋めるものだ。 埋めたあと配列そのものをmoveして返す。 ' 配列の特定位置に関数…

Collectionのソート

VBA

t-homさんの記事 thom.hateblo.jp に言及されていた以下の記事にコメントを書きました。 kantoku.hatenablog.com 「コレクションのソートが面白そうなので考えてみたい。」という趣旨のコメントで、一応作ってはみたのですが、Collectionを使ったことがなか…

SQL Server メモ

VBA

SQL Server Express に日経平均株価のヒストリカルデータテーブルをCREATEして、データをINSERTしたときのメモ。 VBAHaskellとvb_ODBC.clsを使用。 1.データの準備 日経平均株価 日足 時系列データ CSVダウンロードから各年のCSVファイルをダウンロードして…

VBAHaskellの改修まとめ

VBA

最近VBAHaskellにいくつか変更をしたのでまとめの記事を書きます。 VBAHaskell全関数リファレンス → VBAHaskell_reference 1. API関数self_zipWithを追加しました 次のようなシグネチャの関数をHaskell_0_declare.basの一番下に追加しました。 ' 1次元配列の…

clone ⇒ swap ⇒ edit ⇒ swap

VBA

VBAHaskellのC++側APIにふたつの関数を追加した。VBAのクラスインスタンスを操作する時のイディオムである swap と clone を実装するのに使う。 (今回もHaskell的な要素はまったくありません。) 以下ではswap は自身の属性と他のオブジェクトの属性をまる…

メモ

確定申告の納付の仕方がわからなくてイライラした。 [手続名]国税の納付手続(納期限・振替日・納付方法)|納税証明書及び納税手続関係|国税庁 を見ると、 国税の納付の方法には、 ①現金に納付書を添えて納付する方法、②指定した金融機関の預貯金口座か…

VBAHaskellリファレンス

VBA

VBAHaskellの関数リファレンスページを作成した。 作り方がよくわからないので、Excelをそのまま htm ファイルにしただけ。 http://home.b07.itscom.net/m-yamada/vh_Manual/VBAHaskell_reference.htm

VBAHaskell ユーティリティを使ってみる

VBA

先日の記事VBAHaskell ユーティリティ群で書いたユーリティティモジュールは、その後いろいろ関数を追加し、記事にも反映した。 サンプルとして、このところ動きの激しい株価データにごく簡単なデータ処理をしてみよう。 まずYahoo!ファイナンスのページから…

VBAHaskell ユーティリティ群

VBA

先日の記事でVBAHaskellに数学関数を入れ始めたが、案の定その後が続かず放置状態になっている。とりあえず気にせずにユーティリティ関数群を追加する事にした。既存の関数のシンタックス・シュガーや特定の集計作業を便利にするための関数の寄せ集めだ。(…

数学関数を入れ始める

VBA

VBAHaskellには数学関数がまだない。四則演算、指数関数、対数関数、多項式、min、max 程度が Haskell_2_stdFun にあるのと、乱数生成機が misc_random にあるだけだ。 とりあえず数学関数を少しずつ書いていくためのbasファイルを追加した。 VBA/misc_math.…

mbind(std::bindのメタ関数版)

VBA

std::bind は<functional>ヘッダにあるC++11の標準ライブラリで、関数やラムダ式など operator() で呼び出すことが可能なオブジェクト(Callable)に対し、引数を部分的に束縛(bind)するものだ。「呼び出し」とは実行時の関数呼び出しのことであり、引数は値である。 ここ</functional>…

P0051: C++ generic overload function

C++

江添氏のブログに「C++標準化委員会の文書: P0050R0-P0059R0」という記事が掲載されていて、その中にオーバーロード解決のためのoverload関数テンプレートの提案が含まれている。 本の虫: C++標準化委員会の文書: P0050R0-P0059R0 オーバーロード関数を生成…

VBAHaskellでのコラッツ数列(その2)

VBA

以前この記事で コラッツの問題 - Wikipedia にある数列をVBAHaskellで生成するというのをやってみた。 mmyymmdd.hatenablog.com 今回は、多倍長整数を使ってもっと多くの初期値で試してみた。 このついでに以下の3つのモジュールに変更をしたので、その気が…

アッカーマン操作

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>…

C - 友達の友達(AtCoder Beginner Contest 過去問)

VBA

AtCoder Beginner Contest の過去問題(016 2014/12/06 21:05:00 ~ 2014/12/06 23:05:00)をVBAHaskellでやってみた。 C: 友達の友達 - AtCoder Beginner Contest 016 | AtCoder 問題文 高橋くんはSNSの管理者をしています。このSNSではユーザ同士が友達と…

if_else

VBA

以前qiitaに書いたVBAHaskellにおけるFizzBuzz実装の紹介記事で if_else 関数を使った。 qiita.com ここで if_else 関数自体の説明を書く。 if_else およびこれを関数化した p_if_else はHaskell_2_stdFunモジュールにある。 形式 Function if_else(ByRef va…

ジャグ配列をフラットな配列に展開

VBA

コーへーさんのブログからネタを拝借させていただく。 callmekohei.hatenablog.com すでにthomさんもこのネタで記事を書いているので、VBAHaskellを使って少し違う方向性でやってみたい。 目標 ジャグ配列、たとえば Array(1, Array(2, Array(3, Array(4, Ar…

VBA

t-homさんが直近の記事でByRef As Variantで受けたときにアドレスが変わる事象について仮説を書いている。 thom.hateblo.jp 型一致参照であるShowPtr関数とVariant参照であるShowPtr2関数を作って比較し ShowPtr2でVarPtr(IntArg)としたときは、Variant変数…

ByRef As Variant とは?

VBA

(自分用メモ) VBAでByRef x As Longと宣言された仮引数にLong型以外の実引数を渡すと、「ByRef引数の型が一致しません。」というエラーになる。しかしByRef x As Variantという宣言だったら Variant型以外の実引数、たとえばLong型でも渡すことができる。V…

紹介記事の補足

VBA

t-homさんがVBAHaskellの紹介記事を書いてくれた。 thom.hateblo.jp こんなことは僕の人生初なので、とてもうれしい。 ところでそこにapplyFun2by2関数が取り上げられていて少し驚いた。マイナーな関数だと思っていたからだ。t-homさんにはQiitaでも「before…

VBAHaskellで順列の数え上げ

VBA

n 個の元から k-個を選んで得られる順列の総数は下の式で計算できる。 VBAの適当な配列から、このすべての並びを列挙する関数 nPk をVBAHaskellで書いてみる。 (CallMeKohei さんのつぶやきからネタをパクりましたm(_ _ )m) 関数 nPk に任意の配列と取り出…

最近Qiitaに書いた記事へのリンク

VBA

2015/7/25 最近Qiitaに書いた記事へのリンク VBAHaskellの紹介 その22(イテレータ) - Qiitaqiita.com VBAHaskellの紹介 その21(多倍長整数 bigInt) - Qiitaqiita.com

最近Qiitaに書いた記事へのリンク

VBA

最近Qiitaに書いた記事へのリンク <a href="http://qiita.com/mmYYmmdd/items/cc7515e18338ef0fc765" data-mce-href="http://qiita.com/mmYYmmdd/items/cc7515e18338ef0fc765">VBAHaskellの紹介 その20(有理数の計算) - Qiita</a>qiita.com

VBA 配列でつくったテーブルにSQLっぽいことしてみる(パクリ)

VBA

CallMeKoheiさんのブログ記事「VBA 配列でつくったテーブルにSQLっぽいことしてみる(その2)」をパクってみるという、はなし。 arr = Array(Array(Array("品番", "a"), Array("品名", "apple"), Array("価格", 100#)), _ Array(Array("品番", "b"), Array("…