Windows下的Haskell配置
当前Haskell版本: 8.6.5
Stack版本:2.1.3
下载Haskell安装后,在cmd下寻找cabal并设置
cabal user-config init
会显示一行地址
找到该地址,编辑config文件
extra-prog-path: C:\Program Files\Haskell Platform\8.6.5\msys\usr\bin
extra-lib-dirs: C:\Program Files\Haskell Platform\8.6.5\mingw\lib
extra-include-dirs: C:\Program Files\Haskell Platform\8.6.5\mingw\include
此时就可以用cabal安装第三方库,使用GHCI和GHC来解释和编译hs文件了。
安装stack:
文件解压在%APPDATA%\local\bin
可以用echo %APPDATA%
来确定此路径
配置:
当前版本默认全局配置文件位于: C:\WINDOWS\system32\stack.yaml
打开,编辑:
```# This file contains default non-project-specific settings for 'stack', used
in all projects. For more information about stack's configuration, see
http://docs.haskellstack.org/en/stable/yaml_configuration/
#
templates:
params:
author-name: hellmonky
author-email: hellmonky@qq.com
category: personal project
copyright: 'Copyright: (c) 2016 hellmonky'
github-username: hellmonky
此时,在下次执行`stack new currentProject`时,会默认使用这个全局配置作为蓝本生成工程,在新生成的currentProject工程目录下的currentProject.cabal文件中就会出现如下内容:
name: currentProject
version: 0.1.0.0
synopsis: Initial project template from stack
description: Please see README.md
homepage: https://github.com/hellmonky/testProfile#readme
license: BSD3
license-file: LICENSE
author: hellmonky
maintainer: hellmonky@qq.com
copyright: Copyright: (c) 2016 hellmonky
category: personal project
build-type: Simple
-- extra-source-files:
cabal-version: >=1.10
(注:根据设置的不同,上述内容会出现变化)表示当前的stack全局设置生效了。
安装:
`stack setup`
之后就可以用`stack ghc`和`stack ghci`了
`stack path`可以查看相关文件位置
`stack upgrade`升级
`stack version`查看版本
`stack new helloworld`创建新工程
代码写在app/Main.hs中:
module Main where
import System.Environment
main :: IO ()
main = do
args <- getArgs
putStrLn ("Hello, " ++ args !! 0)
保存后命令行执行
`stack build`
检测生成的文件是否可以正确的执行:
`stack exec helloworld-exe hellmonky`
使用stack的exec命令来指定当前工程的可执行文件,这儿的名称为helloworld-exe,后面跟着这个程序运行所需要的参数。回车后如果程序执行正常,表示当前stack的编译完成正确。基本的使用stack构建haskell工程的步骤就完成了。
----------------
总结:
```stack new my-project
cd my-project
stack setup
stack build
stack exec my-project-exe
在第一步骤 stack new hellworld
命令创建工程文件后,生成了如下的文件结构:
.
├── LICENSE
├── Setup.hs
├── app
│ └── Main.hs
├── hellworld.cabal
├── src
│ └── Lib.hs
├── stack.yaml
└── test
└── Spec.hs
3 directories, 7 files
其中src目录下主要包含创建library文件的源代码,而app目录下则主要包含可执行文件相关的源代码文件。 如果在编写源代码的过程中,需要调用其它的第三方库,例如text库,具体的步骤为:
编辑当前工程目录的hellworld.cabal文件,在其中的build-depends段落中添加需要引入的text包名,否则在执行stack build的时候会报“Could not find module”错误;
重新执行stack build命令一次,stack会索引hellworld.cabal文件,然后下载所引入的包;
如果在执行stack build命令的时候遇到“your package isn't in the LTS”错误,尝试在stack.yaml文件的extra-deps段落中添加对应包的更新的版本说明,然后再次执行stack build命令,直到没有错误发生;
执行stack build正确后,即生成对应的库文件和可执行文件。
Manjaro下安装
先更新系统sudo pacman -Syyu
安装:sudo pacman -S stack
stack ghci
(然后退出stack是:quit)
Comments NOTHING