最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

使用 Docker 搭建 Haskell 開發(fā)環(huán)境

2023-01-17 23:59 作者:友紀(jì)V-入OP  | 我要投稿

最近又又又又開始學(xué)習(xí) Haskell,之前學(xué)習(xí)的時(shí)候都使用單文件的形式,這對(duì)使用第三方庫(kù)產(chǎn)生了很大的障礙(最終也沒學(xué)下去),最近研究了通過 Docker 去配置 Haskell 環(huán)境的方式(應(yīng)也適用于linux),這里記錄一下,并且同時(shí)也去使用 Stack 創(chuàng)建空項(xiàng)目和 Yesod 項(xiàng)目、配置plfa環(huán)境。

前置條件:

  • 安裝 Docker

  • 安裝 VS Code,以及 Dev Containers 擴(kuò)展

創(chuàng)建 linux 容器,安裝依賴

首先要?jiǎng)?chuàng)建 linux 容器,使用 fedora 做例子:

我曾嘗試過 ubuntu鏡像,但其在創(chuàng)建 Yesod 項(xiàng)目的時(shí)候遇到奇怪的編碼問題(表現(xiàn)在編譯language-javascript庫(kù)時(shí)getContents報(bào)錯(cuò)),應(yīng)該是系統(tǒng)區(qū)域相關(guān)的玩意被裁剪的原因

然后打開本機(jī)的 VSCode,點(diǎn)擊左下角藍(lán)色圖標(biāo),選擇 Attach to Running Container,選擇該容器。

打開后,參考https://mirrors.ustc.edu.cn/help/fedora.html,執(zhí)行:

安裝 Ghcup,修改 Ghcup,cabal,stack 源

參考https://mirrors.ustc.edu.cn/help/ghcup.html。

首先安裝 ghc 所需依賴:

執(zhí)行下面的命令,一路 y 下去:

如果上面這個(gè)命令出現(xiàn)了奇怪的錯(cuò)誤,或許得使用官方的腳本(注意網(wǎng)絡(luò)):

安裝后,嘗試執(zhí)行 ghci:

bingo!

配置 Ghcup,Cabal,Stack 源

這節(jié)參考https://mirrors.ustc.edu.cn/help/ghcup.html,https://mirrors.ustc.edu.cn/help/hackage.html,https://mirrors.ustc.edu.cn/help/stackage.html。

(用 vi 或者 VSCode)編輯~/.ghcup/config.yaml,添加:

編輯~/.stack/config.yaml,添加:

編輯~/.cabal/config,找到repository hackage.haskell.org一行,編輯為:

然后執(zhí)行下列命令:

使用 Stack 創(chuàng)建項(xiàng)目

執(zhí)行stack new project-name可以創(chuàng)建空項(xiàng)目,創(chuàng)建后進(jìn)入該文件夾,執(zhí)行stack build檢查是否正常。

執(zhí)行stack build若出現(xiàn)”Could not load module ‘Distribution.Simple’”的錯(cuò)誤,移除~/.ghc/相應(yīng)版本 GHC/environments/default應(yīng)當(dāng)能解決,參照https://stackoverflow.com/questions/70994294/problem-with-loading-module-distribution-simple。

給 VSCode 安裝 Haskell 擴(kuò)展,打開項(xiàng)目目錄并打開特定 hs 文件就應(yīng)當(dāng)可以開始編碼了,可以嘗試打開 src/Lib.hs 文件,起空行輸入-- >>> show "Aloha",若出現(xiàn) Evaluate 按鈕則證明工作正常。

添加依賴

添加依賴時(shí)不要使用 cabal,可能會(huì)出現(xiàn)上一節(jié)的問題

但這還不夠,如果能識(shí)別到 Stack 項(xiàng)目的依賴并給與補(bǔ)全才更好。

編輯 package.yaml,在 dependencies 配置下加入 random 依賴:

然后,執(zhí)行stack build,在另起一個(gè)文件 Playground.hs,添加下添加下列內(nèi)容,導(dǎo)入所有所需依賴并點(diǎn)擊 Evaluate:

不管你能不能跑,反正我是能跑了 w。

使用 Stack 創(chuàng)建 Yesod 項(xiàng)目

參考https://www.yesodweb.com/page/quickstart,執(zhí)行 stack build 的時(shí)候會(huì)出錯(cuò),查詢?nèi)罩景l(fā)現(xiàn)缺失 zlib 頭文件,使用 dnf 安裝zlib-static, zlib-devel兩個(gè)依賴即可。

執(zhí)行完畢后,創(chuàng)建文件src/HelloWorld.hs,粘貼下面的代碼(這類型安全的html模板和路由定義,震撼):

然后,執(zhí)行stack runhaskell src/HelloWorld.hs,在本機(jī)訪問localhost:8080,若能成功訪問,bingo!

配置plfa環(huán)境

參考https://agda-zh.github.io/PLFA-zh/GettingStarted,以及https://schneide.blog/2020/09/21/compiling-agda-2-6-2-on-fedora-32。

執(zhí)行下面的命令去:

  • 安裝git

  • 對(duì)一個(gè)系統(tǒng)庫(kù)進(jìn)行鏈接(Haskell為什么這么麻煩?)

  • 安裝agda

  • 獲取agda標(biāo)準(zhǔn)庫(kù)和plfa庫(kù)

  • 拷貝庫(kù)到指定位置


使用 Docker 搭建 Haskell 開發(fā)環(huán)境的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
大冶市| 安宁市| 富平县| 九寨沟县| 黄大仙区| 乐亭县| 湟中县| 出国| 天峨县| 永新县| 莫力| 溧水县| 略阳县| 尼玛县| 汉中市| 施甸县| 弥勒县| 金堂县| 平乐县| 灯塔市| 色达县| 中方县| 隆化县| 阳东县| 女性| 红桥区| 宜阳县| 隆林| 喜德县| 威信县| 鲁山县| 邵阳县| 和政县| 甘孜县| 大安市| 克东县| 宝丰县| 肇州县| 婺源县| 信阳市| 安顺市|