F# リストを使ってみる
始めに
F#のリストを使って色々遊んでみました
サンプルソース
module File1
//リストを使ってみる
//リストを宣言する
let strs= ["dogs";"cats";"bird"]
//printfnでフォーマットを宣言してみる
printfn "%A" strs //["dogs"; "cats"; "bird"]が表示される
printfn "%O" strs //[dogs; cats; bird]が表示される
//パターンマッチを使ってリストにアクセスする
//パターンマッチ その1
let rec accessList strs =
match strs with
|x::xs->printfn "%O " x;printfn "%O " (accessList xs);x+" a"
|[]->printfn "おしまい";"b"
//パターンマッチ その2
let rec accessList2 strs =
match strs with
|x::xs->printf "%O " x; accessList2 xs
|[]->printfn "おしまい";
in
//戻り値があるので、letで結果を束縛する必要がある
let a=accessList strs
//dogs
//cats
//bird
//おしまい
//b
//bird a
//cats a
//が表示される
printfn "letで束縛された結果を表示する"
printfn "%s" a
//letで束縛された結果を表示する
//dogs a
//が表示される
accessList2 strs
//dogs cats bird おしまい が表示される
メモ
その1「パターンマッチ その1」の実行イメージについて
module File1
//リストを使ってみる
//リストを宣言する
let strs= ["dogs";"cats";"bird"]
//printfnでフォーマットを宣言してみる
printfn "%A" strs //["dogs"; "cats"; "bird"]が表示される
printfn "%O" strs //[dogs; cats; bird]が表示される
//パターンマッチを使ってリストにアクセスする
//パターンマッチ その1
let rec accessList strs =
match strs with
|x::xs->printfn "%O " x;printfn "%O " (accessList xs);x+" a"
|[]->printfn "おしまい";"b"
//パターンマッチ その2
let rec accessList2 strs =
match strs with
|x::xs->printf "%O " x; accessList2 xs
|[]->printfn "おしまい";
in
//戻り値があるので、letで結果を束縛する必要がある
let a=accessList strs
//dogs
//cats
//bird
//おしまい
//b
//bird a
//cats a
//が表示される
printfn "letで束縛された結果を表示する"
printfn "%s" a
//letで束縛された結果を表示する
//dogs a
//が表示される
accessList2 strs
//dogs cats bird おしまい が表示される
その1「パターンマッチ その1」の実行イメージについて
プログラムの出力結果を見た感じ、図で書くと下の通りになりそう
[]->でマッチする部分を起点すれば、再帰処理の実行イメージがつかみやすいのかもしれない
関数型言語のリストについて
JavaのListとDeque(Stack)の両方の性質を持っているようなイメージですね
関数型言語のリストはJavaのListよりリスト操作がなめらかな感じがしましたが、Deque(Stack)の性質も持っているなら、それも当然かもしれません
Author And Source
この問題について(F# リストを使ってみる), 我々は、より多くの情報をここで見つけました https://qiita.com/triple4649/items/d032db4c95ecf1134429著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .