2017-07-06 11 views
0

「例文による学習」の例で問題が発生しています。セクション9.3から具体的に、このコード:Purescript do-notationの 'discard'についてどうすればよいですか?

in module Example.Rectangle at src\Example\Rectangle.purs line 16, column 3 - line 16, column 29

A result of type

Context2D

was implicitly discarded in a do notation block. You can use _ <- ... to explicitly discard the result.

while applying a function discard of type Discard t0 => Bind t1 => t1 t0 -> (t0 -> t1 t2) -> t1 t2 to argument (setFillStyle "#0000FF") ctx while inferring the type of discard ((setFillStyle "#0000FF") ctx) in value declaration main

where t0 is an unknown type t2 is an unknown type t1 is an unknown type

See https://github.com/purescript/documentation/blob/master/errors/NoInstanceFound.md for more information,

提案エラーが解決しないと、私は「捨てる」何かを動作することはできませんacctualyん:

main :: Eff (canvas :: CANVAS) Unit 
main = void $ unsafePartial do 
    Just canvas <- getCanvasElementById "canvas" 
    ctx <- getContext2D canvas 

    setFillStyle "#0000FF" ctx -- this's line 16 referred to in the error message 

    fillPath ctx $ rect ctx 
    { x: 250.0 
    , y: 250.0 
    , w: 100.0 
    , h: 100.0 
    } 

は、次のエラーが発生します。私はまた、例えば8.17節の「シミュレート」機能にも同様の問題があることに気付きました。私が "_ < - "を使用して割り当てを提案しようとすると、より多くのランダムな見た目のエラーがトリミングされます。これ以上の暗黙的DOブロック内の値を破棄するように許可されている

+0

ブックにリンクするのではなく、コードを共有してください。これは動作しません。 – timiTao

答えて

1

(これはPSCi 0.11.5を使用しています)。

次のことが可能です。 - 明示的に値を無視: - setFillStyle .... - _ <または戻り値は単位(例えばEffがFXのユニット)である場合は、単に「プレリュード」から「廃棄」

をインポートすることができます
+1

また、 'void $ setFilleStyle ...'を実行することもできます。 'void'はプレリュードから来ます。 – Albtzrly

+0

ありがとう、これらのソリューションの両方が動作し、少し冗長になります – bensnowball