我花了大约一个小时的时间学习PureScript,而且我遇到了PureScript在其网站上推荐的PureScript by Example Tutorial。 (具体来说,我在2.10节)。我已经设法安装了所有内容,并且我正在尝试使用他们在教程中描述的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)
错误:
logShow
我假设log
是一个用于记录整数的方法,因为实际的<?xml version="1.0" encoding="utf-8"?>
方法只接受字符串。这个方法定义在哪里?我没有输入什么东西吗?我的安装不正确吗?或者教程是否会跳过某些内容?
提前致谢!
答案 0 :(得分:11)
你快到了。
注意这一行:
import Control.Monad.Eff.Console (CONSOLE, log)
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
暂时忽略这些影响......
log :: String -> Unit
logShow :: forall a. Show a => a -> Unit
log
仅打印字符串,而logShow
打印任何具有Show
实例的内容。
现实,是的;这意味着logShow
只是(log <<< show)
。如果我们去查看来源...... We can find it's indeed the case。