by shigemk2

当面は技術的なことしか書かない

F#

EXEファイルをhexdumpする

F#

別にF#じゃなくてもよくって、 ファイルをバイナリ形式で読み込む 16バイトずつforでぐるぐる回して出力する この2点が満たされればたぶんRubyでもC++でも一向に構わない。 File.ReadAllBytes メソッド (System.IO)

より早くファイルを実行する

F#

F#のファイル実行について。 $ fsharpi hoge.fsx みたいな感じで実行すると結構時間がかかる。 インタラクティブモードに入ったあとに、#loadってやると より早くファイルを実行することができる。 $ fsharpi > #load "hoge.fsx";;

配列を定義してみよう

F#

let a = [| 0; 0; 0; 0; 0; 0; 0; |] 配列 (F#)

F#のシャドウイング

F#

let hoge = 'hoge' 同じ名前の別の変数を定義すること。OCaml由来。 両方の値に同じ名前を付けると、先に付けたほうの名前が「見えなくなる」というだけです。これを「シャドウイング(shadowing)」と言いますが、F#において、値が変わっているように見える…

実行順序に気をつける感じのやつ

F#

// fetch 中で変数の値を書き換えているので副作用が発生する let fetch() = let ret = read16 mem pc pc <- pc + 2 ret let opr1, opr2 = fetch(), fetch() // このような書き方だと環境依存で実行順序が保証されない 副作用のある関数の結果を、上のような…

F#のignore

F#

// 関数単体で呼び出して返り値を捨てるとThis expression should have type 'unit', but has type 'int'.って怒られる // パイプライン演算子|>を利用してignoreする // e.g. abc(2) => 2 |> abc // ignore(fetch())でも可 // find . -type f | xargs grep …

Converts the specified string to octal integer on F#

F#

Convert.ToInt32 Method (String) (System) @shigemk2 string(8進数)→intですか?それは F# の機能ではなく.NETのライブラリを使います。 let y = System.Convert.ToInt32(x, 8) http://t.co/HYNFmqclWl— 七誌 (@7shi) 2014, 3月 3 > let x = System.Convert…

8進数のビット演算

F#

> sprintf "%o" (0o123456 >>> 3);; val it : string = "12345" > sprintf "%o" (0o123456 >>> 9);; val it : string = "123" > sprintf "%o" (0o123456 >>> 12);; val it : string = "12" > sprintf "%o" (0o123456 >>> 15);; val it : string = "1" 3bitで…

F#のビット処理演算子

F#

> printfn "%x" (0x48 <<< 8);; 4800 val it : unit = () > printfn "%x" (0x45 <<< 8);; 4500 val it : unit = () > printfn "%x" (0x45 >>> 8);; 0 val it : unit = () > printfn "%x" (0x4500 >>> 8);; 45 val it : unit = () > printfn "%x" (0x4500 <<<…

fsharp-modeを入れてみる

https://github.com/emacsmirror/fsharp-mode/tree/master/emacs README.mdの流れどおりにやってみたら、だいじょうぶだった。

F#マークダウン テスト

F#

printfn "Hello" let a = 1 printfn "a = %d" a printfn "Hello"