2016-08-29 16 views
2

PureScriptの学習に約1時間です。私は、PureScriptが自分のサイトで推奨しているPureScript by Example Tutorialを突っついています。 (具体的には2.10節にある)。私はすべてのものをインストールすることに成功しており、チュートリアルで説明しているlogShowメソッドを使用しようとしています。Purescriptチュートリアル:不明な値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メソッドは文字列のみがかかるので、整数をログに記録することを目的とする方法であることを前提としています。私はこのコードを実行するとき、私はUnknown value logShowエラーを取得しています。このメソッドはどこに定義されていますか?私は何かを輸入していませんか?私のインストールは間違っていますか?または、チュートリアルで何かをスキップしていますか?

ありがとうございます!

答えて

9

あなたはほぼあります。

お知らせこのライン:

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

Control.Monad.Eff.ConsoleloglogShowの両方を提供しています。あなたの特定の問題を解決するには、logShow(の後のファーストネーム、エフェクトの名前はCONSOLE)の間にlogを置き換える必要があります。

一瞬のために影響を無視
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は文字列のみを印刷し、同時に2つの違いは、種類によって見ることができます - 念のために

logShowは、Showインスタンスを持つものをすべて出力します。

現実的には、はい。 logShowが単に(log <<< show)であることを意味します。そして、もし我々がソースを見てみると... We can find it's indeed the case