我正在尝试运行本教程中的第一个示例:
从Haskell 调用JVM方法
module Main where
{-# LANGUAGE QuasiQuotes #-}
{-# OPTIONS_GHC -fplugin=Language.Java.Inline.Plugin #-}
import Language.Java (withJVM)
import Language.Java.Inline
main :: IO ()
main = withJVM [] [java| { System.out.println("Hello Java!"); } |]
我得到这个错误:
appMain.hs:8:26: error: parse error on input `{'
|
8 | main = withJVM [] [java| { System.out.println("Hello Java!"); } |]
| ^
我做错了什么?
{-# LANGUAGE … #-}
和{-# OPTIONS_GHC … #-}
杂注需要在module Main
声明之前定义。否则,它将无法启用QuasiQuotes
语言扩展,从而无法理解程序中使用的准引号。
如果安装inline-java
并将语言杂注放在module Main
:之前
{-# LANGUAGE QuasiQuotes #-}
{-# OPTIONS_GHC -fplugin=Language.Java.Inline.Plugin #-}
module Main where
import Language.Java (withJVM)
import Language.Java.Inline
main :: IO ()
main = withJVM [] [java| { System.out.println("Hello Java!"); } |]
它通常应该正确地解释准引号。