Purescript 教程:未知值 logShow

Purescript Tutorial: unknown value logShow

我已经学习了大约一个小时的 PureScript,但在阅读 PureScript 在其网站上推荐的 PureScript by Example Tutorial 时遇到了障碍。 (特别是我在第 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)

我假设 logShow 是一种旨在记录整数的方法,因为实际的 log 方法只接受字符串。这个方法在哪里定义的?我没有导入什么东西吗?我的安装不正确吗?还是教程跳过了什么?

提前致谢!

你快到了。

注意这一行:

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

Control.Monad.Eff.Console 同时提供 loglogShow。要解决您的特定问题,您只需将这些括号之间的 log 替换为 logShow(CONSOLE 之后的名字是 Effect 的名称)。

以防万一 -- 通过类型可以看出两者的区别:

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.