Ich versuche, eine Typ-Signatur für eine Funktion in Vorlage Haskell zu erstellen. Gibt es eine einfache Möglichkeit, dies zu tun?Spleißart Unterschrift in Vorlage Haskell
Ich habe einige Workarounds, um es in der Zwischenzeit zu lösen, aber es sollte einfacher sein, oder?
-- TH.hs
module Lib.TH (mkFunction) where
import Language.Haskell.TH
mkFunction n = do
let name = mkName n
[d|
$(...) :: Integer -> Integer
$(varP name) = \x -> x + 2|]
-- Other.hs
import TH
mkFunction "test"
Was soll ich in der $(...)
oben schreiben? Alles, was ich habe versucht, Ergebnisse in
Invalid type signature: ... :: Integer -> Integer
Should be of form <variable> :: <type>
Dies kann nicht befriedigend sein, aber Sie können '$ (varP name) = (\ x -> x + 2) :: Ganze Zahl -> Ganze Zahl – luqui
Ich habe versucht, aber leider brauche ich eine Einschränkung' (T a) => a -> a', und es funktioniert nicht, wenn ich das einschließe. – Hashmush