我正在遵循48小时内编写自己的方案,此时必须使用标志-fglasgow-exts
编译到程序。我使用的是MacBook和Stack,但当我尝试用stack ghc scheme.hs -fglasgow-exts
或stack ghc -fglasgow-exts scheme.hs
运行它时,我无法让它运行。我试着使用他们使用的命令ghc -package parsec -o scheme
,但也一无所获。
您通过Stack使用GHC,因此如果您想将命令行标志(如-fglasgow-exts
(传递给GHC,则需要在--
之后进行,这样Stack就不会吞噬这些标志:
stack ghc -- -fglasgow-exts scheme.hs
哇,我已经有5年没有在命令行上看到那个标志了。更惯用的做法是放
{-# OPTIONS_GHC -fglasgow-exts #-}
在文件的顶部,但即使这样也相当过时。如今的礼仪似乎是单独启用扩展
{-# LANGUAGE ScopedTypeVariables, RankNTypes #-}
或者你需要的任何东西。您通常可以通过忽略它们来找出您需要的扩展,ghc
会在其错误消息中告诉您。如果你不知道它是什么,这是一个很好的机会去阅读它,我个人觉得这很令人兴奋。