私は関数をHaskellのポイントフリー表記に変換する方法を理解しようとしています。私はthis exampleを見ましたが、それは私が探しているものよりも複雑です。私はその背後にあるロジックを理解しているように感じますが、コードで簡単な例を実行しようとすると、コンパイルエラーが発生します。私がしようとするとポイントフリースタイルでこの機能を書きたい:単純なHaskellはポイントフリースタイルで機能します
f x = 5 + 8/x
私はそうf x = (+) 5 $ (/) 8 x
として再配置、私はそれがこのようなものかもしれないと思った:
f = (+) 5 $ (/) 8
が、私は実行するとこれは、GHCiの中で私はこのメッセージが表示されます。
No instance for (Num (a0 -> a0))
arising from the literal `5' at Test.hs:3:9
Possible fix: add an instance declaration for (Num (a0 -> a0))
In the first argument of `(+)', namely `5'
In the first argument of `($)', namely `(+) 5'
In the expression: (+) 5 $ (/) 8
Failed, modules loaded: none.
私はメッセージ「のために...いいえ、インスタンスを」理解していません。この機能をポイントフリーのスタイルで書くには、何が必要ですか?
私はhttp://stackoverflow.com/questions/940382/haskell-difference-between-dot-and-dollar-sign(あなたは[ '$'と '.'事業者との違い]について混乱かもしれないと思います)。 – hammar