我花了大约一个小时的时间学习PureScript,并且我通过PureScript在他们的网站上推荐的示例教程中遇到了一些障碍.(具体来说,我在第2.10节).我设法安装了所有东西,我试图使用logShow他们在教程中描述的方法.我得到的Unknown value logShow,当我运行此代码错误:
module Main where
import Prelude
import Control.Monad.Eff (Eff)
import Control.Monad.Eff.Console (CONSOLE, log)
import Math (sqrt)
main :: forall e. Eff (console :: CONSOLE | e) Unit
main = logShow (diagonal 3.0 4.0)
diagonal w h = sqrt(w * w + h * h)
Run Code Online (Sandbox Code Playgroud)
我假设这logShow是一个用于记录整数的log方法,因为实际方法只接受字符串.这个方法定义在哪里?我没有输入什么东西吗?我的安装不正确吗?或者教程是否正在跳过某些内容?
提前致谢!
Ven*_*Ven 11
你快到了.
注意这一行:
import Control.Monad.Eff.Console (CONSOLE, log)
Run Code Online (Sandbox Code Playgroud)
Control.Monad.Eff.Console提供log和logShow.为您解决特定的问题,您只需要更换log与括号之间logShow(后的第一个名字(,CONSOLE是效果的名称).
以防万一 - 两者之间的差异可以通过以下类型看出:
log :: forall eff. String -> Eff (console :: CONSOLE | eff) Unit
logShow :: forall a eff. Show a => a -> Eff (console :: CONSOLE | eff) Unit
Run Code Online (Sandbox Code Playgroud)
暂时忽略这些影响......
log :: String -> Unit
logShow :: forall a. Show a => a -> Unit
Run Code Online (Sandbox Code Playgroud)
log只打印字符串,同时logShow打印任何有Show实例的东西.
实际上,是的; 这意味着logShow简单(log <<< show).如果我们去看源头...... 我们可以发现它确实如此.