Haskellのいとも奇妙なる演算子

Haskell は他の言語では見慣れない演算子が多々あって戸惑う。特に気になった主要なものをまとめる。 文脈で意味が異なる演算子・記法 &vert; (1) ガード条件(2) リスト内包表記の区切り (such that) (例) [func x &vert; x<-[1..9]](3) 列挙型の定義で列挙…

モノイドふたたび

前にまとめたが、( → ノート:群・モノイド・半群・マグマ(亜群) - 滴了庵日録 ) モノイドとは、集合と二項演算について単位元が存在するやつだった。 (ただし、この二項演算はこの集合のなかで閉じていること、また結合法則をみたすこと)このようなモノイド…

Haskell と C言語でバブルソートを比較

Haskell 非常に簡潔に書けるが、再帰を用いており慣れないと理解しづらい。 -- リストの最小値を先頭に上げる bubble [x] = [x] -- 要素1個ならそのまま bubble (x:xs) | x > y = y:x:ys -- 1個目が2個目以降の最小値より大きければ入れ替える | otherwise =…

WindowsでHaskellはじめるよ

Haskellのインストール ghci と runghc と ghc ghci の実行 (対話モード) runghc の実行 (スクリプト実行) ghc の実行 (コンパイル) プロジェクトの作成とビルド Haskellのインストール Haskellのインストールは stack を使う。他の方法もあるが、stackはツ…

【Rust】Rc と Cell と RefCell

Rustでは、ある値の所有権を持つことができるのは一つの変数のみである。所有権は譲渡できるが、同時に複数の変数が一つの値の所有権を持つことはできない。しかし、それでは困ることも多々ある。そこで Rc なるものが用意されている。 Rc<T> 複数の変数に所有</t>…

Rust / WebAssembly 開発メモ (補足)

前回の記事の補足 プロジェクトテンプレートを使った方法 前回の記事では素のプロジェクトから Cargo.toml や Rustのコードを書いたが、プロジェクトテンプレートを利用する方法もある。 まず cargo-generate をインストールしておく。 cargo install cargo-…

Rust / WebAssembly 開発メモ

開発方法について wasm-packのインストール プロジェクトの作成 ビルド 動作確認 VSCodeでのデバッグ 補足 参考 開発方法について Rust で WebAssembly を開発する方法としては、素の wasm32-unknown-unknown による方法と、wasm-pack を利用する方法とがあ…

Tauri 開発メモ

Tauriとは? → RustでGUIいろいろメモ - 滴了庵日録 開発環境のインストール Rustの開発環境がインストールされていること → メモ:WindowsでRustの開発環境 - 滴了庵日録 Tauri CLI のインストールは下記のコマンドで。 cargo install tauri-cli ところが、…

RustでGUIいろいろメモ

何を使うか? RustでGUIアプリを作るには何を使えばよいか? どうもまだ決め手が無い感じ。最近有力なのは Tauri。歴史あるGTKのバインディングである gtk-rs。この2つがまだしも情報が多い。あとは iced、egui、Slint、conrod、Rust-Qt、…などいろいろある…

Qtウィジェットアプリ開発メモ

勝手の分からないことだらけなので、つれづれにメモ。 開発環境のインストール オープンソース版Qt の Qt Creator を使用 インストール時の「コンポーネントの選択」がやや分かりにくいが、「Qt」の中のバージョンを一つ選び (とりあえずベータ版でない最新…

PILの画素アクセスの高速化検討

PILのImageの画素に(x,y)座標でアクセスする速度を計測した。 目的 「Pythonでfor文を使ったら負け」とも言われるが、PILやOpenCVの画像処理機能を使わずに自前で画像処理を実装する場合、画素へのアクセスはどのような方法が高速かを比較検討する。 画素へ…

VSCodeで簡単ローカルWebサーバ

発端 HTML/CSS + JavaScript の静的サイトであれば、わざわざローカルにWebサーバを立てなくても、HTMLファイルをブラウザで開けば動作確認できる。しかし、JavaScriptからサイト内のファイルにアクセスする場合、例えば画像ファイルを読み込む下記のような…

.NET SDKのバージョン確認とインストール

エラー NETSDK1045 Visual Studioでのビルド時に、必要な.NET SDKがインストールされていないと、エラー NETSDK1045 が発生する。 現在の .NET SDK は、ターゲットとする .NET Core 6.0 をサポートしていません。.NET Core 5.0 以下をターゲットとするか、.N…

ノート:2次元の線形写像の幾何学的な意味 (3)

ノート:2次元の線形写像の幾何学的な意味 (2) - 滴了庵日録 の例のうち対角でない行列を対角化する。 対角化の方法 2次正方行列に対して、2個の一次独立な固有ベクトルとその固有値があるとき、 とおくと、は対角行列になり、その値は となる。 とおくと、 …

パソコン版Googleドライブからログアウト

微妙に分かりにくかったのでメモ。通知領域にあるGoogleドライブのアイコンをクリック。右上の歯車アイコンをクリックし、さらに「設定」をクリック。右上の歯車アイコンをクリック。「アカウントの接続を解除」をクリック。再接続するにはスタートメニュー…

ノート:2次元の線形写像の幾何学的な意味 (2)

ノート:2次元の線形写像の幾何学的な意味 - 滴了庵日録 の具体例を示す。 変換の意味 行列 A 行列式 |A| 固有値 λ 固有ベクトル x x方向に2倍 2 2, 1 y方向に2倍 2 1, 2 x方向に-1倍(左右反転) -1 -1, 1 y方向に-1倍(上下反転) -1 1, -1 xとyの入れ替え(y=x…

ノート:2次元の線形写像の幾何学的な意味

具体例は→ ノート:2次元の線形写像の幾何学的な意味 (2) - 滴了庵日録 2次元の線形写像 2×2行列(2次正方行列) で表される。 図形を原点を中心に変形させる。変形は伸縮と剪断と回転からなる。 原点(0,0)は動かない。(平行移動はしない) 伸縮は、原点を中心…

ノート:準同型定理

部分群 ある群の部分集合であって、それ自身も群となるもの。 部分群 H⊂G とは、Gが群であり、Gと同じ演算に関してHが群であること。 H≤G と書くこともある。 (演算に関して閉じている) (単位元を含む) (逆元に関して閉じている) 例 (Z,+) ⊂ (Q,+) ⊂ (R,+) ⊂…

(今さら) LPCXpressoでHEXファイル生成

プロジェクトの「Properties」→「C/C++ Build」→「Settings」→「Build Steps」で 「Post-build steps」の「Command」を編集し、下記のコマンドを追加する。 arm-none-eabi-objcopy -O ihex ${BuildArtifactFileName} ${BuildArtifactFileBaseName}.hex※ コマ…

Gitでサブモジュール

何ができるか? 外部の gitリポジトリを、自分の gitリポジトリのサブディレクトリとして登録し、特定のコミットを参照できる。ライブラリなどを参照する場合に便利である。 サブモジュールを登録する 自分の gitリポジトリで、ターミナルから下記のようなコ…

GitHubで迷子のコミット

GitHubのリポジトリで、https://github.com/ユーザ名/リポジトリ名/tree/ハッシュ値(40桁) にファイルは存在するが、Commits の一覧に現れない、迷子になってしまったコミットというのが存在しうる。コミットの属するブランチが削除された場合、そのコミット…

ノート:全射・単射・全単射と準同型写像・同型写像

f:写像 (map) X:定義域, 始域 (demain) Y:終域 (codomain) f : X→ Y 全射・単射・全単射 全射 (上への写像, surjection) f(X) = Y つまり Y の全ての元を指す → があること 単射 (1対1写像, injection) 異なる → が Y の同じ元を指さないこと 全単射 (上…

ノート:群、環、体

群 (Group) 復習→ ノート:群・モノイド・半群・マグマ(亜群) - 滴了庵日録集合 G と 演算 ◦ の組 (G, ◦) が G0~G3をみたすなら群、G0~G1をみたすなら半群 (G0) 閉じている (G1) 結合法則 (G2) 単位元の存在 (G3) 逆元の存在 さらにG4も満たすなら可換群(…

ノート:群・モノイド・半群・マグマ(亜群)

代数系とは 代数系とは、集合 (例えば 整数 Z ) と演算 (例えば 加法 +) の組。 例えば Z と + の組を (Z, +) のようにあらわす。 集合だけでは代数系ではない。 包含関係 群・モノイド・半群・マグマ(亜群)は代数系で、下図のような包含関係にある。 内側の…

PlatformIO で Arduino Uno R4 Minima

Lチカのプロジェクトを作成 Project Wizard で、Board に Arduino Uno R4 Minima を指定する。はじめて R4 Minima のプロジェクトを作成するときは、ツールチェーンやライブラリがインストールされるので、終わるまで待つ。 Lチカのコード ボード上のLEDを点…

Gmailで特定のラベルのメールをmbox形式で保存する

mboxファイルのエクスポート Google データ エクスポート を開く。(「Googleアカウントを管理」 →「データとプライバシー」→「データをダウンロード」からもアクセスできる。) 「新しいエクスポートの作成」→「① 追加するデータの選択」で「選択をすべて解除…

SESでインクルードパスの設定

SES (Segger Embedded Studio) で、インクルードパスとライブラリパスを設定する方法をメモ。Project Explorerでプロジェクト名を右クリックして「Options」をクリック。コンフィギュレーションは「Common」を選択する。(「Debug」および「Release」は「Comm…

GCCでUTF-8なソースの文字列リテラルをShift-JISのバイナリにコンパイルする

やりたいこと UTF-8で保存されたC言語のソースファイル中の日本語文字列リテラルを、Shift-JIS(正確にはCP932)のバイナリにコンパイルしたい。使用するCコンパイラはGCCとする。 なぜやりたいか 今どきはソースファイルはUTF-8エンコードで保存するのが一般…

『異邦人』のフランス語

カミュの『異邦人』は、一般的には不条理小説と呼ばれるが、何が不条理なのかよく分からない。不条理というならキリスト教徒側(判事や司祭)の言ってることのほうがよほど不条理で滑稽に思える。文章じたいは簡潔なので、フランス語まったく知らないけど拾…

STM32CubeMXにMCUパッケージをインストール

インストール方法 CubeMXを起動し、「Help」→「Manage embedded software packages」をクリック。「STM32Cube MCU Packages」タブで所望のMCUシリーズ (ここではSTM32H7) の所望のバージョン (ここでは1.11.0) を選択し「Install」をクリック。 インストール…