レコードを 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 型への評価が適用される場合と適用されない場合のルールを知りたいです。