Stack无法识别Criterion.Main导入,执行脚本报错求助
问题解决步骤
1. 解决stack --resolver lts-11.10 script --optimize的"Missing: FILE"错误
这个错误是因为你漏写了要运行的作业文件名,script子命令必须明确指定要处理的Haskell文件。正确命令应该是:
stack --resolver lts-11.10 script --optimize fib2.hs
2. 解决添加shebang后执行stack fib2.hs的报错
你写的shebang不完整,Stack脚本的shebang需要在紧接着的下一行用--开头的注释声明Stack参数,正确的文件开头格式如下:
#!/usr/bin/env stack -- stack --resolver lts-11.10 script --optimize import Criterion.Main -- 你的作业代码...
另外,stack fib2.hs不是运行脚本的正确方式:
- 类Unix系统(Linux/macOS):给文件加上可执行权限后直接运行
./fib2.hs; - Windows系统:shebang支持有限,直接用上述完整的
stack script命令运行更稳妥。
至于"Executable named sh not found on path"的报错,多是Windows环境下缺少类Unix shell环境(比如Git Bash、WSL)导致的。要么安装Git Bash并将其sh路径加入系统PATH,要么直接放弃shebang,用完整stack script命令运行。
3. 解决import Criterion.Main无法识别的问题
指定lts-11.10 resolver后,Stack会自动下载对应版本的Criterion包(该resolver版本包含此包),无需手动更新cabal或单独安装依赖,用上述正确的stack script命令运行即可自动处理依赖。
内容的提问来源于stack exchange,提问作者Am Akkaya
相关产品推荐
相关产品推荐

