0

レコードを JavaScript に渡すと、次のように動作します。

data Record = Record {
  elem :: String
}
doSomethingForeign :: Record -> Fay ()
doSomethingForeign = ffi " callJsFun(%1) "

しかし、関数が単相でない場合、レコードは評価されず、手動で行う必要があります:

class Passable a
instance Passable Record
instance Passable Text
doSomethingForeign' :: (Passable a) => a -> Fay ()
doSomethingForeign' = ffi " callJsFun(Fay$$_(%1)) "

これは単純なケースで、 の余分な型付けFay$$_がそれほど煩わしいものではありませんが、型パラメーターを持つより複雑な構造を js に渡すと、追加してFay$$_も解決しません。ネイティブの js 型への評価が適用される場合と適用されない場合のルールを知りたいです。

4

1 に答える 1