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

ネストしたレコードの更新 (F#)

F#

ネストしたレコードの下層のほうを更新しようとすると下記のような記述となります。本来なら上層に下層を更新するメンバー関数を用意しておくのが理想ですが、面倒な場合用に簡素な記述で更新できる関数を実装します。 type Container = { Value : int } typ…

SodiumでFunctional Reactive Programming (F#) --- 現在値の参照

現在値を参照しない例 Streamの入力があると値が100となる、初期値0のCellは以下のように記述できます。 let value = input |> Stream.mapTo 100 |> Stream.hold 0 現在値を参照する例 Streamの入力があると1ずつ増加する、初期値0のCellは以下のように記述…

SodiumでFunctional Reactive Programming (F#) --- WPF連携

下記記事ではコンソールアプリケーションにてSodiumを実装しました。 SodiumでFunctional Reactive Programming (F#) --- 導入 - 何でもプログラミング今回はSodimuをWPFのMVVMに対応させたバージョンを実装します。 全体構造 CommandをStreamに、CellをProp…

SodiumでFunctional Reactive Programming (F#) --- 導入

Sodiumのコンパイル NuGetではC#版しか取得できませんので、githubよりソースをダウンロードします。 https://github.com/SodiumFRP/sodiumF#内のSodium.slnをビルドするとSodium.dllが作成されます。 またPriority Queue.dllがNuGetから取得されます。 Hell…

F#でWPF --- Elm Architectureを利用したMVVM --- Model側のキャッシュ

下記記事で紹介いたしました構造において、Viewの差分更新は自動で行われるのですが、その他の部分は全て毎回作成することになっています。 F#でWPF --- Elm Architectureを利用したMVVM - 何でもプログラミングもし時間のかかる処理が存在する場合は毎回計…

F#でWPF --- Elm Architectureを利用したMVVM

下記の記事でMVVMを紹介しましたが、実装が冗長であるという問題がありました。 WPFにおけるMVVM - 何でもプログラミング今回は下記記事で紹介しました、簡素な記述のできるElm ArchitectureをMVVMに適用します。 Elm --- Model、View、Update - 何でもプロ…

WPFにおけるMVVM --- F#コード版

前回下記記事にて紹介しましたC#版のMVVMを、F#化したものを掲載いたします。 WPFにおけるMVVM - 何でもプログラミング実際には、冗長すぎる、mutableが頻発する、といった理由でこのままの記述方法を使うことはありません。ただ単にC#をF#に書き直したらど…

WPFにおけるMVVM

作成するアプリケーション 簡単なカウンタアプリケーションをもとに説明していきます。 C#のWPFアプリケーションプロジェクトを想定しています。 従来方式での実装 ボタンに登録されたコールバック内にてcountを増減し、テキストにcountを設定する、といった…

Elm --- Model、View、Update

Elm

Elmの基本構造を、Elmのサンプルにあるカウンタを用いて紹介します。 作成するアプリケーション ボタンを押すと数値が+1もしくは-1される簡単なものです。 Elmの基本構造 Model アプリケーションの状態を保持 Update 送られてくるメッセージに従ってModelを…

Elm --- インストール、動作確認

Elm

ダウンロード Elmのサイトに行ってインストーラをダウンロードします。 インストール デフォルトの設定で問題ありません。 Visual Studio Code 拡張機能インストール 今回はエディタとしてVisual Studio Codeを利用します。 拡張機能でelmパッケージをインス…

F#でWPF --- ウィンドウ表示

F# & WPFのプロジェクトテンプレートはいくつか存在するみたいですが、(F# Empty Windows App (WPF) 等)今回はコンソールアプリケーションから作成していきたいと思います。 プロジェクトの作成 Console Applicationを選択します。 参照の追加 Presentatio…