この記事はHaskell Advent Calendar 2022の1日目の記事です。 この記事では、2022年12月時点のHaskellの環境構築手順を紹介します。2023年になっても通用するといいなあ。 対象とする環境 対象とする環境は以下の通りです: Unix系 macOS (Intel / Apple Silicon) Linux (x86_64 / aarch64) WSL2を含む(WSL1は不具合があった気がするので避けてください) Windows (x64) Arm系CPU搭載のコンピューターを使っている場合は、別途LLVMが必要になる場合があります。以下に当てはまる場合は、「補遺:LLVMバックエンドを使う」も読んでください: 64ビットArm(Apple Silicon Macや、Raspberry Pi OSの64ビット版など)で、GHC 9.0またはそれ以前のバージョ
Haskellで本格的に開発する際はcabalなりstackなりでプロジェクトを作るわけですが、ファイル一つで済むような(書き捨て)スクリプトをHaskellで書きたい場合があります。 依存関係のないスクリプトであれば、普通にファイルを作って runghc/runhaskell すれば良いでしょう。しかし、Haskellには標準ライブラリー(base)以外にも「準標準」と呼べる外部のライブラリーが多数あり(例:bytestring, text, vector)、それらに明示的に依存することは runghc ではできません。 そこで使えるのが、cabal scriptやstack scriptと呼ばれる機能です。 cabal script cabal run コマンドを使うと、ファイル中に {- cabal: 形式の特殊なコメントを含むHaskellコードをその場でビルドして実行することがで
Cabal 2.4以降ではsource-repository-package stanzaによってGitHubなどにあるレポジトリから直接パッケージをインストールできるようになっている。 例えば、cabal.projectファイルに以下のように記述する。 source-repository-package type: git location: https://github.com/brendanhay/amazonka tag: 0ccede621e56fb6f240e4850e205cde82d0e4a4b subdir: lib/amazonka lib/amazonka-core lib/services/amazonka-sts (なお、subdirに複数のディレクトリを指定するには cabal-install >=3.2.0.0 が必要らしい) これによってamazonkaパッ
本記事は 「Haskell Advent Calendar 2021」の4日目の記事です。 空いてたので埋めました。 Bazelというビルドツールがあります。Bazelでは、いわゆるライブラリのようなものを使うことで、簡単にさまざまなプログラムのビルドやテストの実行を同じインターフェースで行うことができます。例えば: bazelbuild/rules_go : Goプログラムのビルドやテストなど bazelbuild/rules_docker : Dockerイメージのビルドやプッシュなど bazelbuild/rules_nodejs : Nodeプログラムのビルドやテストなど そして、tweag/rules_haskell を使うことで、Bazel を利用して Haskell プログラムのビルドが行えます。今回は今年でた新しいバージョンの Haskell 処理系、GHC 9.2.1 を
要約 Haskellのcabal-install v3でNix-style build(v3ではこれがデフォルトのモード)をする場合、doctestを使うパッケージがあるなら以下の設定をcabal.projectや$HOME/.cabal/configに書いておくといい。
はじめに (あともう少しで)あけましておめでとうございます。 この記事では2020年12月31日時点での私のおすすめの最新のHaskellプロジェクトの作成方法をまとめます。 Haskellの環境構築はstackを使うものとcabalを使うものの2種類があります。 歴史的にはcabalの不便さを改善したのがstackですが、現在はcabalも進化して 不便さは大幅に解消されているため、筆者の好みでcabalによる環境構築をまとめます。 ツールのインストール ghcup ghcupはGHCとcabalとHLSをバージョン管理してくれるインストーラです。 インストールガイド を参考にインストールしてください。 バージョン確認 ghcupをインストールしたら $ ghcup list Tool Version Tags Notes ✗ ghc 7.10.3 base-4.8.2.0 ✗ ghc
cabal repl コマンドは ghci, ghc --interactive stack repl, stack ghci などと同じように cabal で REPL 環境を実行するためのコマンドです。 cabal プロジェクト内で実行する場合と、cabal プロジェクト外で実行する場合で挙動が少し異なります。 $ cabal -V cabal-install version 3.2.0.0 compiled using version 3.2.0.0 of the Cabal library cabal プロジェクト外で実行した場合 cabal は自動的に fake-package という環境を用意します。これは使い捨てのダミー cabal プロジェクトです。 $ cabal repl Resolving dependencies... Build profile: -w ghc-8
Haskell のビルドツールといえば cabal と stack です。ちょっと前までは cabal より stack の方が流行っていたのですが、最近は開発も落ち着いているようであまり動きがありません。それよりも cabal の nix-style local build が非常に使いやすく、近頃では stack から cabal に移行しているプロジェクトも多くあります。 stack を使っていて改善したら良いなぁと思う部分としては、新しい GHC やライブラリをすぐに使おうと思っても LTS や nightly に入っていないため使えなかったり、Backpack が未だに使えなかったりするところでしょうか。 ただ、ビルドの再現性という点においては stack の方が優秀だと思っているので今は両方使っています。(index-state と freeze ファイルを組み合わせれば ca
cabal の build-tool-depends というフィールドが便利だったので紹介します。 テストを書くときに hspec-discover や tasty-discover などを使う場合、このフィールドを設定しておくことで依存している実行ファイルを自動的にダウンロードして使ってくれます。 $ cabal --version cabal-install version 3.0.0.0 compiled using version 3.0.0.0 of the Cabal library サンプルプロジェクトの構成 全体のディレクトリ構成は以下のようになっているとしましょう。 $ tree . . ├── example.cabal ├── src │ └── Lib.hs ├── stack.yaml └── test ├── LibSpec.hs └── Spec.hs それぞ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く