五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ó)家法律
修水县| 临城县| 新疆| 仙桃市| 昌乐县| 清水县| 新竹市| 顺平县| 通江县| 闽侯县| 双鸭山市| 巴林右旗| 肇庆市| 洛阳市| 深泽县| 清水县| 兰州市| 扬中市| 改则县| 兴安盟| 舒兰市| 景泰县| 沙田区| 万源市| 方正县| 故城县| 寿宁县| 亳州市| 永川市| 龙海市| 黄山市| 淅川县| 礼泉县| 长治市| 葵青区| 荥经县| 喀什市| 旌德县| 绥芬河市| 岚皋县| 水城县|