この関数を作っておけば、他と組み合わせていろいろできるのに対して、Topを比較する関数は単一目的だからです。日経平均株価のヒストリカルデータテーブルをCREATEして、データをINSERTしたときのメモ。VBAHaskellとvb_ODBC.clsを使用。CSVダウンロードから各年のCSVファイルをダウンロードしておく。getTextFile("H:\download\indices_I101_1d_2016.csv"))中身はこんな感じ。各ファイルにヘッダがついていて、末尾には空白行がある。siソート後の状態を見てみる。空白行が先頭に、ヘッダ行が末尾に集まっている。空白行(先頭10行)とヘッダ行(末尾10行)を削除し、各項目をカンマで区切る。メモTweet広告を非表示にするコメントを書くもっと読む2016-10-29VBAHaskellの改修まとめVBA最近VBAHaskellにいくつか変更をしたのでまとめの記事を書きます。API関数self_zipWithを追加しました次のようなシグネチャの関数をHaskell_0_declare.basの一番下に追加しました。同じようなことを、一つの配列の中で行うものです。3番目の引数shiftに与えた数値が「いくつ要素をずらしながら処理を適用するのか」を表し、正負どちらの方向にずらしても1周して戻ってきます。a(8))が戻り値になります。15元の配列は変更されません。次の項目である関数get_uniqueや以前からあった関数adjacent_opの効率を高めるためにこれを作りました。1次元配列の重複した要素を削除する関数get_uniqueを追加しました。Variant第2引数compは等値条件を表します。隣どうしの要素をcompで比較した結果が1になるものを「重複」と判定します。離れた場所にある要素は比較しないので、完全に重複を削除するためにはソート済であることが前提になります。第2引数を省略するとp_equalを使った場合と同じになります。元の配列は変更されません。重複要素が削除されている2次元以上の場合は以下のようにジャグ配列にする必要があります。(<>)関数を追加しました。略で、辞書式比較のことを示します。二つの1次元配列の要素を順に見ていって等値かそうでないかを返します。(>=)はもともと存在していましたが、この2つを新たに追加しました。Haskell_5_sort.basp_not関数とp_imply関数を追加しました。p_notはいわゆる論理Not、p_implyは「AならばB」の「ならば」に相当するものです。いずれも関数オブジェクトのみです。いずれかが真の時に成り立つ命題です。misc_utility.basp_Trim関数を追加しました。RTrim関数をひとまとめにしたもので、第2引数0または省略時、1、-1がそれぞれに対応します。1次元配列として表された集合AとBに対して、共通部分と非共通部分を示すフラグを出力します。Variant第3引数のcompは大小関係を表す述語で、それぞれの集合はそれによってソート済みという前提です。swapVBAVBAHaskellのC++側APIにふたつの関数を追加した。(今回もHaskell的な要素はまったくありません。自身と同じ属性を持つコピーオブジェクトを生成する操作のことを意味する。swapのパターンを用いて実装した例がこちら。swapとcloneは上記APIを使って実装したものと想定している。Private宣言されていても問題なく呼び出すことができる。途中でオブジェクトの内部状態が壊れてしまった時も2度目のswapによってMeは問題なく現状復帰できる。editメソッドは正常系のロジックに専念し、失敗した場合は単にFalseを返せばよくなるので記述がシンプルになる。他のオブジェクトを受け取ってMeと相互作用する関数を作るこれも同じことで、対象のオブジェクトとMeをswapをすることによってMeに対する操作に置き換えることができる。Function受け取った他のオブジェクトに副作用を及ぼすことをしないのであればcloneを作る必要はないが、副作用があるならcloneを作っておきcloneとswapすることによって元に戻すことができる。swapとcloneのイディオムによって、クラス内でしか使用しないPrivateメソッドをあえてPublic化する必要は減ると思う。APIとして追加したcopy_valueMemberとcopy_objectMemberのシグネチャは以下の通り。VBA側でswapとcloneを実装する例がこちら。部分を個別に対象のクラス型に変える必要がある。シノニムを宣言すればいい。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。