У меня есть два связанных вопроса о вызове RPC для Yesod/Snap/Servant:
1) Скажем, у меня есть функция на сервере, написанная в Haskell, скомпилированная GHC:
add x y = x+y+42
как 1) Я вызываю эту функцию от клиента (клиент также написан в Haskell, скомпилирован с GHCJS) и 2) выполняет функцию на сервере и 3) возвращает результат клиенту?
Сделайте все это безопасным способом?
Итак, например, я хотел бы написать что-то вроде этого на клиенте:
main= putStrLn $ show $ add 2 3
чтобы функция добавления выполняла на сервере .
Каков самый простой способ сделать это с помощью Yesod/Snap/Servant на сервере и GHCJS на клиенте?
2) Аналогично, я хотел бы написать "функцию":
getPhaseOfMoon :: IO Phase
, который запускается на сервере, и я хотел бы вызвать getPhaseOfMoon
из клиента безопасным способом.
Чтобы я мог написать это на клиенте:
main= do
p<-getPhaseOfMoon
putStrLn $ show p
return ()
Какой
1) переходит на сервер
2) сервер обращается к фазе луны
3) сервер возвращает Phase
клиенту
4) клиент отображает фазу луны в Консоли JavaScript.
Как это сделать с помощью Yesod/Snap/Servant (сервер) + GHCJS (клиент)?