1 下载stack

安装Haskell开发环境首先要安装管理工具stack,在官网找到并下载,也可以直接下载下面的链接:
https://get.haskellstack.org/stable/windows-x86_64-installer.exe

然后执行安装,如果安装过程中出现“add to PATH”的选项,一定要勾选。

2 修改配置

安装stack之后要修改它的配置,配置文件路径一般是:C:\sr\config.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/# The following parameters are used by "stack new" to automatically fill fields
# in the cabal config. We recommend uncommenting them and filling them out if
# you intend to use 'stack new'.
# See https://docs.haskellstack.org/en/stable/yaml_configuration/#templates
templates:params:author-name: Your Nameauthor-email: youremail@example.comcategory: Your Projects Categorycopyright: 'Copyright (c) 2022 Your Name'github-username: yourusername# The following parameter specifies stack's output styles; STYLES is a
# colon-delimited sequence of key=value, where 'key' is a style name and
# 'value' is a semicolon-delimited list of 'ANSI' SGR (Select Graphic
# Rendition) control codes (in decimal). Use "stack ls stack-colors --basic"
# to see the current sequence.
# stack-colors: STYLESsetup-info-locations: ["http://mirrors.tuna.tsinghua.edu.cn/stackage/stack-setup.yaml"]
urls:latest-snapshot: http://mirrors.tuna.tsinghua.edu.cn/stackage/snapshots.jsonsnapshot-location-base: https://mirrors.tuna.tsinghua.edu.cn/stackage/stackage-snapshots/package-indices:- download-prefix: http://mirrors.tuna.tsinghua.edu.cn/hackage/hackage-security:keyids:- 0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d- 1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42- 280b10153a522681163658cb49f632cde3f38d768b736ddbc901d99a1a772833- 2a96b1889dc221c17296fcc2bb34b908ca9734376f0f361660200935916ef201- 2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3- 51f0161b906011b52c6613376b1ae937670da69322113a246a09f807c62f6921- 772e9f4c7db33d251d5c6e357199c819e569d130857dc225549b40845ff0890d- aa315286e6ad281ad61182235533c41e806e5a787e0b6d1e7eef3f09d137d2e9- fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0key-threshold: 3 # number of keys required# ignore expiration date, see https://github.com/commercialhaskell/stack/pull/4614ignore-expiry: no

3 安装GHC

命令行输入:
stack setup

安装完成出现如下提示,即表示安装成功。


They will never be overwritten nor automatically updated.  './.bashrc' -> '/home/w/.bashrc'
'./.bash_logout' -> '/home/w/.bash_logout'
'./.bash_profile' -> '/home/w/.bash_profile'
'./.inputrc' -> '/home/w/.inputrc'
'./.profile' -> '/home/w/.profile'
For more information on paths, see 'stack path' and 'st
ack exec env'
To use this GHC and packages outside of a project, cons
ider using:
stack ghc, stack ghci, stack runghc, or stack exec 

4 stack命令

如果只使用交互式解释器的话,可以在命令行输入stack ghci进入交互式解释器中。

全局命令

使用GHC stack ghc
交互式解释器 stack ghci

项目命令:

新建项目 stack new helloworld new-template
配置项目 stack init
编译项目 stack build
执行项目 stack exec helloworld-exe
调试项目 stack test

5 项目Hello World

5.1 创建项目

选择一个文件夹,打开命令行输入:

stack new helloWorld

将会下载模板,并提示

Downloading template "new-template" to create project "helloWorld" in helloWorld\ ...
Looking for .cabal or package.yaml files to use to init the project.
Using cabal packages:
- helloWorld\Selecting the best among 21 snapshots...* Matches https://mirrors.tuna.tsinghua.edu.cn/stackage/stackage-snapshots/lts/19/1.yamlSelected resolver: https://mirrors.tuna.tsinghua.edu.cn/stackage/stackage-snapshots/lts/19/1.yaml
Initialising configuration using resolver: https://mirrors.tuna.tsinghua.edu.cn/stackage/stackage-snapshots/lts/19/1.yaml
Total number of user packages considered: 1
Writing configuration to file: helloWorld\stack.yaml
All done.

5.2 目录结构

进入项目文件夹
cd helloWorld
查看文件树如下
tree /F

E:.
│  .gitignore
│  ChangeLog.md
│  helloWorld.cabal
│  LICENSE
│  package.yaml
│  README.md
│  Setup.hs
│  stack.yaml
│
├─app
│      Main.hs
│
├─src
│      Lib.hs
│
└─testSpec.hs

这里需要进行修改的主要是app/Main.hs文件和src/文件夹,其他文件在初学时可以忽略。

5.3 修改程序

这个时候就需要用vs code 进行编辑了,打开项目文件夹,可以看到在main函数引用了模块Lib中的someFunc函数。

可以将Main.hs的代码修改如下:

module Main wheremain :: IO ()
main = doputStrLn "你好,欢迎来的Haskell世界!"putStrLn "你的名字是?"name<-getLine putStrLn ("欢迎"++ name ++ "!")

5.4 编译程序

打开vs code中的命令行,输入:

stack build

执行编译。
编译成功后的exe文件会出现在文件夹.\.stack-work\install\8c80d480\bin中。

5.5 执行程序

在命令行输入

stack exec helloWorld-exe

即可执行程序

输出如下:

你好,欢迎来的Haskell世界!
你的名字是?
李华
欢迎李华!

Haskell 开发平台安装及Hello World相关推荐

  1. Ubuntu虚拟机及Petalinux开发平台安装

    第一部分 Ubuntu虚拟机安装 所需资源: 1.VMware-workstation_full_12.1.1.6932.exe 2.ubuntu-14.04.3-desktop-amd64.iso ...

  2. EasyMonitor 视频监控开发平台 安装教程(保姆式教程)

    ~~ EasyMonitor 视频监控开发平台 安装教程(保姆式教程) 本教程基于虚拟机环境测试 一.虚拟机安装CENTOS7 我用的是MINI版的只有900M,附一个网盘链接: https://pa ...

  3. ubuntu14.04如何在线安装eclipse以及C/C++开发组件,搭建软件开发平台

    在ubuntu14.04操作系统中进行C/C++软件开发,需要安装eclipse以及CDT等各种组件,下载安装包一一安装,之后再进行各种配置可能比较麻烦,在这里推荐一种在线安装方式,安装配置较为方便. ...

  4. NuGet(微软.NET开发平台的软件包管理工具)在VisualStudio中的安装的使用

    场景 NuGet NuGet(读作New Get)是用于微软.NET开发平台的软件包管理器,是一个Visual Studio的扩展.在使用Visual Studio开发基于.NET Framework ...

  5. solaris安装java_Solaris是出色的Java开发平台的原因

    solaris安装java 几天前,我发布了" OpenSolaris的死亡:为Java开发人员选择操作系统 ",其中我说Solaris是Java开发人员的绝佳平台. 这篇文章的重 ...

  6. android平台开发的安装

    问题描述 希望师傅们能提供下能一次性安装好android开发平台的sdk和adt的方法, 如果是官方网址,希望能提供得详细些, 本人初学,还望各位师傅不吝赐教, 在下先谢谢了!!! 解决方案1 网站h ...

  7. MapGIS IGServer开发平台学习版安装文档

    MapGIS IGServer开发平台学习版安装文档 准备工作:下载 第一部分:添加例外端口 第一步:打开防火墙 开始-->运行-->输入firewall.cpl-->确定 或者 开 ...

  8. 手机开发平台指南、教程和资料介绍

    近来无事,把手机开发平台的学习指南.教程和资料总结一下,方便大家参考.     手机客户端软件开发最大的困难就是平台不统一,手机开发平台太多.     手机可分为智能手机开发和feather phon ...

  9. echarts python源码_基于Echarts的微代码开发平台SmartChart, 免费开源使用

    A platform that Connect Data to Echarts. 简介 SmartChart基于Echarts/Django的微代码开发平台,适用于任何WEB项目 简单, 敏捷, 高效 ...

  10. Win7环境下搭建GO开发平台——SublimeText 2

    Sublime Text 是近几年才流行起来的一个代码编辑器(Sublime Text 2是收费软件,但可以无限期试用),也是HTML和散文先进的文本编辑器.Sublime Text是由程序员Jon ...

最新文章

  1. Xcode中Objc动态调用方法同时避免警告的几个办法
  2. Innosetup(pascal)标签控件label换行
  3. Java程序员面试中的多线程问题1
  4. MVC,MVP与MVVM
  5. 操作系统常用调度算法
  6. java多线程notify_Java多线程 wait notify
  7. 『流畅的Python』第12章:继承的优缺点
  8. sklearn自学指南(part46)--新颖性和离群值检测方法概述
  9. 如何使用ABP框架(2)三层架构与领域驱动设计的对比
  10. pymssql mysql_Python利用pymssql访问mysql数据库
  11. Linux C++ 实现线程池
  12. MIT算法导论(一)——算法分析和引论
  13. 开发物体识别桌、_科研人员开发突破性的技术,允许盲人识别形状和物体
  14. 2021牛客寒假算法基础集训营3,签到题DGHIJ
  15. 正菱台体积在线计算机,正四棱台体积,表面积,棱长,质量在线计算器_三贝计算网_23bei.com...
  16. Attention Rollout
  17. live2d内嵌html,为你的博客博客/网页添加Live2d二次元老婆的插件/手动方法
  18. Java 八种排序算法比较实践
  19. Springboot设置多数据源,随时切换
  20. iOS APP图标一键生成

热门文章

  1. Linux系统目录的作用你了解吗?
  2. python训练营 朋友圈点赞收费吗_微信朋友圈点赞,是不是扣话费?有人给
  3. 树形动态规划 java_树形动态规划
  4. vba odbc 3704 mysql_[求助]ado对象调用存储过程运行时错误3704
  5. lol韩服游戏内设置_LOL手游:灵药战队有多强?辅助国际服第六,AD堪比UZI
  6. vue-awesome-swiper:依赖于6.X版本Swiper时轮播分页器下方小圆点不显示
  7. Javascript特效:表单选中、取消选中、反选
  8. Javascript特效:图片切换(类似于电商网站图片查看)的封装实现和闭包实现
  9. 三实系统地址是什么意思_终于明白!火灾报警系统的余量应该如何设置?地址数又是什么?...
  10. usage java,dnsjava usage