Выбор конструкции MailboxProcessor.PostAndReply

Looking at:

member this.PostAndReply : (AsyncReplyChannel<'Reply> -> 'Msg) * ?int -> 'Reply

Я не могу понять, почему подпись выглядит настолько неинтуитивной для меня. То, что мы хотим сделать, - это отправить сообщение агенту и ждать ответа. Почему мы должны давать ему странную функцию в качестве "сообщения"?

Посмотрите еще раз этот фрагмент MSDN:

let rec loop() =
    printf "> "
    let input = Console.ReadLine()
    printThreadId("Console loop")
    let reply = agent.PostAndReply(fun replyChannel -> input, replyChannel)
    if (reply <> "Stopping.") then
        printfn "Reply: %s" reply
       loop()
    else
        ()
loop()

Я бы предпочел что-то вроде этого:

member this.PostAndReply : 'Msg * ?int -> 'Reply

Спасибо

12
задан Dmitrii Lobanov 14 March 2012 в 14:19
поделиться