2016-09-18 9 views
0

私は無名関数のどこで使うことができるのだろうかと思いました。私はこの方法でそれをやろうとしました:Haskellのラムダ関数で 'where'を使用できますか?

\x -> k where k = x+1 

しかし、これは 'どこで'の解析エラーを与えます。

+1

これは許可されていませんが、代わりに「\ x - > let k = x + in k'」としてください。 – redneb

+0

letを使うことはできますが、どこを使うことはできません。大文字小文字を使用できますか? –

+2

はい、 'case'(とそのことについて' let .. in')は普通の式なので、許されます。 'case'については、' LambdaCase'拡張も見てください。 – redneb

答えて

5

ラムダ式の特定の式では、whereを使用できますが、内部だけではありません。

f = \x -> 
    case x of 
    Nothing -> 12 
    Just y -> z * 2 
     where z = y + 7 
+1

興味深い。私の経験では、実際のコードではまあまあまあではありません。実際には可能でした。 :) – chi

+0

@chi、私は個人的にそれを '容器'の中でまともな量使います。これは、ビューを囲むときには非常に便利です。 'case viewl xs of y:< ys -> ...ここでは...'。 – dfeuer

関連する問題