простой putStrLn в Haskell / Yampa с синтаксисом стрелок - PullRequest
3 голосов
/ 01 июня 2010

Я использую Haskell с библиотекой Yampa FRP, которая использует расширение языка стрелок.

как я могу сделать простой putStrLn в SF?

mySF = proc x -> do
    y <- identity -< x*x
    putStrLn "Hello World!" ++ show y
    returnA -< y

синтаксис стрелки жалуется на то, что выражение не за стрелкой (конечно), но даже со стрелками я не получаю вывод

 output <- identity -< putStrLn "Hello World!"

Ответы [ 2 ]

6 голосов
/ 01 июня 2010

Я только немного поиграл с Yampa, пытаясь проработать документы FRP, но, насколько я понимаю, это совсем не то, как вы работаете с IO в Yampa. Вместо этого вы «анимируете» SF a b с помощью функции reactimate, которая принимает функцию типа b -> IO () в качестве второго аргумента. Эта функция - то, где будут жить такие вещи, как ваш putStrLn, наряду с любыми другими видами рендеринга, которые делает программа.

Раздел «Функции анимации сигнала» «Yampa Arcade» дает хорошее объяснение того, как работает reactimate.

5 голосов
/ 02 июля 2011

Вот полный пример Hello World для Yampa.

{-# LANGUAGE Arrows #-}

import FRP.Yampa

main = reactimate initialize input output process
initialize  = return "Hello World!"
input _     = return (0.0, Nothing)
output _ x  = putStrLn x >> return True
process     = identity
...