2012-06-14 114 views
13

我已经编写了一个模块,并且为了运行模块导入的主代码需要语言扩展{-# LANGUAGE OverloadedStrings #-}或当编译过程中需要给出选项。是否可以“隐藏”语言扩展?

如果我在模块中包含{-# LANGUAGE OverloadedStrings #-}这是无法治愈的,并且用户仍然需要在她的代码或编译时执行相同的操作。

有没有什么办法可以在实际模块中做“某些事情”,以便从最终用户那里解决这个问题,从而说出“隐藏”所需的语言扩展?

回答

13

不,您的图书馆公开了需要使用语言扩展的功能。这是你应该在你的文档和例子中说明的东西。用户代码无法打开它。

10

请注意,-XOverloadedStrings从来没有需要。松散地说,所有这些扩展都是将"I'm a string"翻译为fromString "I'm a string"。没有扩展名,用户可以自己做同样的事情。