我有两个有关 RPC 调用的相关问题Yesod/Snap/Servant
:
假设我在服务器上有一个函数,用 Haskell 编写,由 GHC 编译:
add x y = x+y+42
怎么能:
- 我从客户端调用这个函数(客户端也是用 Haskell 写的,用 编译
GHCJS
), - 在服务器上执行函数,
- 将结果返回给客户端?
以类型安全的方式执行所有这些操作?
因此,例如,我想在客户端上写这样的东西:
main= putStrLn $ show $ add 2 3
这样 add 函数就会在服务器上执行。
Yesod/Snap/Servant
在服务器上使用 GHCJS 和在客户端使用 GHCJS的最简单方法是什么?
2)同样,我想写一个“函数”:
getPhaseOfMoon :: IO Phase
它在服务器上运行,我想以getPhaseOfMoon
类型安全的方式从客户端调用。
这样我就可以在客户端上写这个:
main= do
p<-getPhaseOfMoon
putStrLn $ show p
return ()
哪个
- 去服务器
- 服务器查询月相
- 服务器返回
Phase
给客户端 - 客户端在 JavaScript 控制台中显示月相。
问题
我怎样才能用Yesod/Snap/Servant
(服务器)+ GHCJS(客户端)做到这一点?