学習の記録−2

F#では二進数を書くときは0bを頭につける。

> 0b111;;
val it : int = 7

符号なし8bitの整数を表すbyte型もある。使いたい時は語尾にuyをつける。

> 0b0001uy;;
val it : byte = 1uy
> 5uy;;
val it : byte = 5uy

ビットごとの演算は

  • &&&:AND
  • |||:OR
  • ^^^:XOR
  • ~~~:NOT
  • >>>:右シフト
  • <<

でできる。

> 0b1110 &&& 0b0101;;
val it : int = 4
> 0b1110uy &&& 0b0101uy;;
val it : byte = 4uy
> 0b1110uy ||| 0b0101uy;;
val it : byte = 15uy
> 0b1110uy ^^^ 0b0101uy;;
val it : byte = 11uy
> ~~~0b1uy;;
val it : byte = 254uy
> 0b1uy <<< 1;;
val it : byte = 2uy
> 0b10uy >>> 1;;
val it : byte = 1uy

UNIXでいうパイプライン的な動作をするその名もパイプライン演算子ってのもある。

> let add = fun x -> fun y -> x + y;;

val add : int -> int -> int

> 0
- |> add 1
- |> add 10
- |> add 100
- ;;
val it : int = 111

どうもinを使った書き方に慣れないのでメモっておく。

let f x = 
    let y = x * 2 in
    let z = x * x in 
    (y,z)

> f 3;;
val it : int * int = (6, 9)

関数合成演算子(>>)を使うことで関数の合成が可能。

let add x y = x + y
let add6 = add 1 >> add 2 >> add 3

> add6 10;;
val it : int = 16