技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

基礎プログラム練習

適当に勉強したコードを貼り付ける。
Haskell も多少齧ったけど、やっぱ関数型言語は世界観が違いすぎる。
逆に面白いが、道が長そうね。結局は書いて覚えるしかなさげ。

open System

let nagate x = -x

let nagateArray args =
    List.map nagate args

let nagateInlineArray args =
    List.map (fun x -> -x) args

let printNumber value =
    printfn "%d" value

[<EntryPoint>]
let main (args:String[]) =
    let numbers = [1..10]
    // let reverses = nagateArray numbers
    let reverses = nagateInlineArray numbers

    List.iter printNumber reverses
    
    ignore(Console.ReadKey())
    0

集合計算でListとSeqがあるけど、Listのほうは確定要素の演算だけど、Seqは遅延評価型のようだ。
関数をパイプで接続する際に、おそらくは関数スタックが出来るのだろうと予測。

open System

let square x = x * x

let sum numbers =
    numbers
    |> Seq.map square
    |> Seq.sum

[<EntryPoint>]
let main (args : String[]) =
    let nums = [1..10]
    printfn "%d" (sum nums)
    
    ignore(Console.ReadKey())
    0


そしてカリー化

let printNumber value =
    printfn "%d" value
let printNumber =
    printfn "%d"

まぁ使い方が変わったワケではないのだが、、、。