Freigeben über


Ракетные установки на F#

Опубликовано 25 января 2010 г. 09:48 | Coding4Fun

clip_image001Крис Смит (Chris Smith) выступал на конференции CodeMash в январе 2010 года с докладом «Как стать злым гением, используя F# и .NET». Крис написал по мотивам своего доклада статью о своем видении компьютеров, о распознавании речи и стрельбе ракетами – и все это «изложено» на F#!

Вот небольшой фрагмент из его кода распознавания речи с применением System.Speech.dll:

 let recognizerEvent = getWordRecognizer()
 
// Основной обработчик – преобразует речь в команды RL
let handleWord spokenText =
    printfn "Recognized Word: %s" spokenText
    let action = 
        match spokenText with
        | "up"  // ох и потрудился же я над распознаванием этого слова :(
        | "north" -> MoveUp(20)
        | "down"  -> MoveDown(20)
        | "left"  -> MoveLeft(20)
        | "right" -> MoveRight(20)
 
        | "fire"  -> Fire
 
        | _ -> NoOp
        
    performAction rocketLauncher action |> ignore
 
// Обработчик выхода – слушает слова exit/quit
let terminateLoop = ref false
let terminateLoopHandler = function | "exit" 
                                    | "quit" -> terminateLoop := true
                                    | _      -> ()
 
// Подключаем обработчики событий
recognizerEvent.Add(handleWord)
recognizerEvent.Add(terminateLoopHandler)
 
while terminateLoop.Value = false do
    System.Threading.Thread.Yield() |> ignore
()

Крис с удовольствием предоставил и весь исходный код: RocketLauncher_v1.0.zip.