我已经编写了一个模块,并且为了运行模块导入的主代码需要语言扩展{-# LANGUAGE OverloadedStrings #-}
或当编译过程中需要给出选项。是否可以“隐藏”语言扩展?
如果我在模块中包含{-# LANGUAGE OverloadedStrings #-}
这是无法治愈的,并且用户仍然需要在她的代码或编译时执行相同的操作。
有没有什么办法可以在实际模块中做“某些事情”,以便从最终用户那里解决这个问题,从而说出“隐藏”所需的语言扩展?
我已经编写了一个模块,并且为了运行模块导入的主代码需要语言扩展{-# LANGUAGE OverloadedStrings #-}
或当编译过程中需要给出选项。是否可以“隐藏”语言扩展?
如果我在模块中包含{-# LANGUAGE OverloadedStrings #-}
这是无法治愈的,并且用户仍然需要在她的代码或编译时执行相同的操作。
有没有什么办法可以在实际模块中做“某些事情”,以便从最终用户那里解决这个问题,从而说出“隐藏”所需的语言扩展?
不,您的图书馆公开了需要使用语言扩展的功能。这是你应该在你的文档和例子中说明的东西。用户代码无法打开它。
请注意,-XOverloadedStrings
是从来没有需要。松散地说,所有这些扩展都是将"I'm a string"
翻译为fromString "I'm a string"
。没有扩展名,用户可以自己做同样的事情。