Subscribed unsubscribe Subscribe Subscribe

F# Monkey

about

友達がいないのでパソコンにこんにちはと言ってもらうようにしたった

F#

f:id:callmekohei00:20170318074536p:plain

Summary

callmekoheiと自分の名前を打ち込んだら、こんにちは callmekoheiと返事してもらえるプログラムを作ったった

Motivation

と、友達がいないから・・・(泣

Code

ほとんどが定型コード。コピペでオーケー(^_^)/

/// インタラクティブ・コンソール・アプリの定型パターン
module InteractiveConsole =

    type PrinterAgent() =
        let inbox = MailboxProcessor.Start( fun inbox ->
            let rec loop () = async {
                let! (msg: Choice<string,AsyncReplyChannel<unit>>) = inbox.Receive()
                match msg with
                | Choice1Of2 (s: string) ->
                    System.Console.WriteLine s
                    return! loop ()
                | Choice2Of2 ch ->
                    ch.Reply ()
                }
            loop ()
        )

        member x.WriteLine(s) = inbox.Post (Choice1Of2 s)
        member x.Quit()       = inbox.PostAndReply(fun ch -> Choice2Of2 ch)

    let agent = new PrinterAgent()

    let rec main f str =
        match str with
        | "exit" | "quit" -> agent.Quit()
        | _      -> 
            agent.WriteLine( f str )
            main f ( stdin.ReadLine() )

module ABC =
    
    /// ここに自分のつくったコードを書く!
    let hello (s:string) :string =
        "hello! " + s

    [<EntryPointAttribute>]
    let entry argv =
        try
            InteractiveConsole.main hello ""
            0
        with e ->
            stdout.WriteLine( e.Message )
            0

実行のしかた

// 上のコードをコピペ
$ vim abc.fsx

// コンパイル
$ fsharpc abc.fsx

// 実行
$ mono abc.exe

// 自分の名前を入力する
callmekohei
hello! callmekohei // 返事が返ってくる!

// プログラムを終了する
quit
Remove all ads