Purescript教程:未知值logShow

war*_*r57 3 purescript

我花了大约一个小时的时间学习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提供loglogShow.为您解决特定的问题,您只需要更换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).如果我们去看源头...... 我们可以发现它确实如此.