Subscribed unsubscribe Subscribe Subscribe

F# Monkey

about

F#をたったの2週間でモノにする10のコツ

この記事はF# Advent Calendar2016 2日目の記事です ( see : F# Advent Calendar 2016 - Qiita )

01: インテリセンスがつかえる環境でコードをかく

メモ帳とかでかくと多分インテリセンスが効かないです。

のでメモ帳とかでは書かない方がいいかもです。

これすごく重要です!

こんな感じでしょうか・・・

OS          IDE             Text Editor
----------------------------------------------------
Windows     Visual Studio   Visual Studio Code, Atom
MacOSX      Xamarin         Visual Studio Code, Atom
Unix        ???             Vim, Emacs

02: 基本的な型はおぼえておく

こんな感じで。まぁ、なんとなくで。

value                type             meaning
-------------------------------------------------------------------------
99                   int              数字
"A"                  string           文字
99 or "A" or 'a'     'a               なんでも
[1;2;3]              int list         中身は数字のリスト
[ [1;2]; [55;99] ]   int list list    中身は数字のリストをつつんでるリスト
( 99, "A" )          int * strig      数字と文字

03: 型情報を調べるための道具としてFSIをつかう

型が知りたいなーと思ったらFSIで調べてみる!

~$ fsharpi                    // FSIをたちあげる
> let f a b = a + b ;;        // 知りたい式とか値とか入力する

val f : a:int -> b:int -> int // 型が出力される

04: 型アノテーションを極力書くようにする

めんどくさがらずにかくといいかもです。

アノテーションとはたとえばaintですよと肩書きすることです。

// 型アノテーションを省略せずに
let add a b =
    a + b

// こんな感じで型アノテーションをかいておく
let add (a:int) (b:int) : int =
    a + b

05: レコードをつかってコードをスッキリさせる

ひとつのパラメーターで多くの情報を

関数に渡すことができコードがスッキリします!

例えば下記のコードだとcallmekoheiInfoというレコードで

多くの情報をhelloに渡すことができます。

module Util =

    type Info =
        { name  : string
          age   : int    }

    let hello (info: Info) =
        printfn "Hello! My name is %s! Age is %d!" <|| (info.name, info.age)

module Usage =
    open Util

    let callmekoheiInfo: Info =
        { name   = "kohei"
          age    = 20     }

    callmekoheiInfo |> hello
    // Hello! My name is kohei! Age is 20!

06: ライブラリにある機能を知っておく

たとえばリストの要素を3個づつくくりたいとします。

で、そのためのコードを書きます。

あら、List.chunkBySizeというのがあったります。

ということで

ライブラリ

あるかもしれない

その機能

07: 英語の文章をすこしだけ読めるようになる

F#の情報は英語で書かれた情報が多いような気がします。

ので英語が少し読めた方がいいかもです。

08: F#寺子屋にとりあえず疑問なこととか書いてみる

実はF#のチャット(掲示板のようなもの)があったります。

活用できるものは積極的に活用しましょう!

https://gitter.im/fsugjp/public

09: むずかしいことは考えない

とりあえずコード書くのに必要ないかと。。。

クロージャとか
遅延評価とか
関数型言語とか
モナドとか
関数型プログラミングに目覚めたとか

10: 楽しんでコードをかく

結局これかと。






Remove all ads