Purescript教程:未知值logShow

时间:2016-08-29 20:48:39

标签: purescript

我花了大约一个小时的时间学习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"?> 方法只接受字符串。这个方法定义在哪里?我没有输入什么东西吗?我的安装不正确吗?或者教程是否会跳过某些内容?

提前致谢!

1 个答案:

答案 0 :(得分:11)

你快到了。

注意这一行:

import Control.Monad.Eff.Console (CONSOLE, log)

Control.Monad.Eff.Console同时提供loglogShow。要解决您的特定问题,您只需要在loglogShow之后的第一个名称,(,效果名称)之间替换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