戻り値の型によっては、Signal (Int, Int) は (Int, Int) のタプルとして認識されません。
次のコードを検討してください。
import Graphics.Element exposing (..)
import Mouse
relativeMouseElement : (Int, Int) -> Element
relativeMouseElement mp = show (fst mp - 1000, snd mp - 1000)
relativeMouseTuple : (Int, Int) -> (Int, Int)
relativeMouseTuple mp = (fst mp - 1000, snd mp - 1000)
main =
-- Signal.map relativeMouse Mouse.position
relativeMouseTuple Mouse.position
Signal.map relativeMouse Mouse.position
正常に動作し、ブラウザーに (-1000、-1000) が表示され、マウスの動きに応じて値が調整されます。
relativeMouseTuple Mouse.position
ただし、これは機能しません。私が得る複雑なエラーは次のとおりです。
Function `relativeMouseTuple` is expecting the argument to be:
( Int, Int )
But it is:
Signal ( Int, Int )
これは非常に奇妙だと思います。どちらの場合も、最初の引数は Signal (Int, Int) で、2 番目の場合は型エラーになります。
何か案は?