Haskell 2010 言語報告書 Why Haskell - why GitHub use Haskell for their newly released Semantic package
- STANDARDIZED LADDER OF FUNCTIONAL PROGRAMMING
- Anatomy of a Haskell-based Application
- Tracking Changes to Base
- How to contribute to the Haskell ecosystem
- Worst practices should be hard
- Simple Unique IP System Script
- Measuring Software Fragility
- The Four Flaws of Haskell
- Practical Haskell: Simple File Mirror (Part 1)
- Practical Haskell: Simple File Mirror (Part 2)
- Monitoring the popularity and the development of GitHub projects - GitHub上の活発なHaskellのプロジェクトを表示
- Actually Using Haskell!
- What Makes Haskell Unique
- Infinite Negative Utility: Some Notes About How I Write Haskell
- An opinionated guide to Haskell in 2018
- Haskell package checklist | Write better Haskell packages
- Haskell Bazaar
- Great moments in Haskell history
- Real World Haskell — Monday Morning Haskell
Preludeを置き換える
Preludeの問題点
base
は最小限に作られているためよく使うdirectory
やtransformers
といったライブラリが入っていない- そのため、初学者には目的に対してどのライブラリが標準的に使われているのかが判断しにくい
- さらによく使うライブラリは毎回依存関係を記述する必要があるため冗長だし、面倒さにより自分で再実装してしまう危険もある
RIO
Stack開発の知見が集められたライブラリ
- よく設計され信頼できるライブラリを集めている
- 使い勝手の良い
Prelude
の置き換えである - プロダウション品質のHaskellコードを書くためのベストプラクティスを集めたもの
という特徴がある。
- The RIO Monad
- commercialhaskell/rio: A standard library for Haskell
- rio ライブラリを試す その1
- Evaluating RIO | Freckle Education
- Porting to Rio
その他のライブラリ
- The rebase package
- nikita-volkov/rerebase
- The base-prelude package
- haskell-foundation/foundation
- serokell/universum: Prelude used in @Serokell
- safe-prelude: a thought experiment - Michael Snoyman’s blog
Docker
- haskell - Docker Hub
- fpco/stack-build - Docker Hub
- fpco/stack-build-small - Docker Hub
- Docker + Haskell の Hello Worldビルド - Qiita
- How I deploy Haskell Code
- Kubernetes for Haskell Services
- Dev and Deploy Haskell on Docker
- The split-image approach to building minimal runtime Docker images
- STATIC BINARIES FOR HASKELL: A CONVOLUTED APPROACH
- Building Haskell Apps with Docker
- Static compilation with Stack
- HaskellでもGoみたいにシングルバイナリでアプリケーションをデプロイしたい - Qiita
- Haskellで超簡単にシングルバイナリを作る - Qiita
- fugue/fregot: Fugue Rego Toolkit
- NoRedInk – Tuning Haskell RTS for Kubernetes, Part 1
multi-stage builds
- Haskell on Docker で Portable CLI を作ろう - Qiita
- Shrinking Haskell Docker images using multi-stage builds | Codurance | Craft at Heart | London | Barcelona
- Oleg’s gists - Multi-stage docker build of Haskell webapp
Hadolint
- hadolint/hadolint: Dockerfile linter, validate inline bash, written in Haskell
- DockerfileをLintするにはhadolintが良さそう
- 「hadolint」にシバかれながら美しいDockerfileを書き上げる - 憂鬱な世界にネコパンチ!
- beijaflor-io/haskell-language-dockerfile: Haskell Dockerfile linter, parser, pretty-printer and EDSL, forked from https://github.com/lukasmartinelli/hadolint.
- GitHub Actions と hadolint を組み合わせて Dockerfile の静的解析を自動化しよう! - kakakakakku blog
Docker Engine API
- denibertovic/docker-hs: A Haskell library for the Docker Engine API
- Deni Bertovic :: Haskell and Docker: Down the rabbit hole and back
ビルドツール
Shake
- Shake
- Shaking up the IDE
- New Shake with better wildcard patterns
- 24 days of Hackage, 2015: day 22: Shake: the dynamic build system
- Upgrading Shake :: Capital Match Tech Blog
- Neil Mitchell’s Haskell Blog: GHC Rebuild Times - Shake profiling
- ghc-shake: Reimplementing ghc --make
- Non-recursive Make Considered Harmful
- CS Syd - Research as a build system with Shake
- Build Systems à la Carte
- shake-plus: Re-export of Shake using well-typed paths and ReaderT.
- shake + lucid + hint で静的ウェブサイト生成 - 趣味はデバッグ……
Hadrian
- snowleopard/hadrian: Hadrian: a new build system for the Glasgow Haskell Compiler. Now merged into the GHC tree!
- HSoC — Hadrian Optimisation: First GHC Contribution (Update 4)
- Well-Typed - The Haskell Consultants: Exploring Cloud Builds in Hadrian
- HSoC — Hadrian Optimisation: Profiling and getting ahead of Shake changes (Update 5)
- HSoC — Hadrian Optimisation: Final Report - James Foster - Medium
- You should try Hadrian | no time
CI/CD
- ZERO TO CONTINUOUS INTEGRATED TESTING A HASKELL PROJECT WITH GITLAB
- CONTINUOUS INTEGRATION TO CONTINOUS DELIVERY HASKELL PROJECT WITH GITLAB
- harendra-kumar/packcheck: Universal build and CI testing for Haskell packages
- The hapistrano package
- Hapistrano’s new features
- HaskellとHspecでBuddy CI - Qiita
- Dead simple cross-platform GitHub Actions for Haskell
Travis CI
- hvr/multi-ghc-travis
- phadej/travis-meta-yaml
- Haskell on Travis CI
- Using Stack on Travis CI
- Updated Haskell Travis config
- guillaume-nargeot/hpc-coveralls
- Deploying Haskell: Painless CI/CD with Travis, Docker and Digitalocean (or any linux VM)
- Dead simple Haskell Travis settings for cabal and stack
- CI で Haskell Stack の Docker Integration するために
Circle CI
- 言語ガイド:Haskell - CircleCI
- Stackで管理しているHaskellのプロジェクトをCircleCIでビルドする
- Circle CI configuration with yesod (haskell) backend and javascript frontend - Rafał Łasocha
- CircleCI2.0でHaskellのテストを実行する – PSYENCE:MEDIA
- Circle CI 2.0 の設定
- Building a Blog Part 5: Continuous integration with CircleCI
Bazel
- Tweag I/O - Build large polyglot projects with Bazel… now with Haskell support
- Tweag I/O - Nix + Bazel = fully reproducible, incremental builds
- adventures in uncertainty: Bazel, Haskell, and Build-System Joy
- Haskell Stack プロジェクトを Bazel でビルドしてみる
Workflow
- tweag/funflow: Functional workflows
- Tweag I/O - Funflow: typed resumable workflows
- FUNFLOW EXAMPLE: EMULATING MAKE
- mpickering - Using funflow to cache a nix based workflow
Music
- spell-music/csound-expression: Haskell Framework for Electronic Music
- Algorithmic, hyperreal, broken techno.
- The Music Suite
- Paul Chiusano on csound-expression
- MUSIC FROM NOISE
- Composing (Music) in Haskell - Stuart Popejoy
- Euterpea - A Haskell library for music creation
- The haskore package
- Adding PortAudio Support to HfM (Haskell for Mac)
- COMBINATORIAL MUSIC THEORY
- Analysis of musical structures: an approach utilising monadic parser combinators
- Algorithmic Compositional Techniques Developed for “Pleonid”
- mrkkrp/flac - Complete high-level Haskell binding to libFLAC
- Haskellでの 音楽表現 - Qiita
- Modeling Music
- Functional Works - Music, Haskell… and Westeros
- karya - overview.md –
- Tidal (Haskell DSL) in action at GitHub Universe 2018 : haskell
- Interesting Music in Four Lines of Code – Donya Quick’s Website
- TydalCycles TIPS パート1「乱数を用いる」 - Qiita
- TydalCycles TIPS パート2「乱数で自動作曲する」 - Qiita
- Haskellでスクラッチから作曲してみた - Qiita
- 【TidalCycles】ライブコーディングによる作曲のすすめ - Qiita
- dcfl is a parallelized constraint solving library for Haskell.
- Lazy Functional State Threads
- How to make your Haskell code more readable to non-Haskell programmers
- 2D Contouring
- mrkkrp/htaglib
- DDCSF/ddc
- Ling - High level system programming [32c3]
- np/ling
- Haskell Meets the Central Dogma
- typed-wire/typed-wire
- justinethier/husk-scheme
- wireapp/cryptobox-haskell
- Controlling Fusion In Haskell
- Composing Network Operating Systems
- hopper-lang/hopper
- Haskell: mistakes I made
- SAW - The Software Analysis Workbench
- HIPERFIT/futhark
- J for Haskell Programmers
- The Disciplined Disciple Compiler (DDC)
- FOMObot Will Help With Your Slack FOMO
- egison/egison
- video data sharing library - databrary/databrary
- v3: The Vision, The Plan
- GaloisInc/HaLVM
- The HaLVM Status Report, Issue 1
- Hierarchy of documentation dysfunction
- kaizhang/SciFlow
- When Haskell is faster than C
- phadej/existential-constraint.hs
- sdiehl/protolude
- The Haskell School of Music
- Destroy All Ifs — A Perspective from Functional Programming
- Pointless Haskell
- Overture: A Haskell Prelude
- シェル芸とHaskellの対応を考える
- willdonnelly/dyre - A Dynamic Reconfiguration Library for Haskell Programs
- Thoughts on Haskell
- Getting audio from Youtube channels in the easiest way possible using Haskell
- A toy Mathematica interpreter in Haskell
- λ抽象(無名関数) を SKI コンビネータに展開するトランスレータを書いた
- Using Haskell to Find Unused Spring MVC Code
- Designing APIs for Extensibility
- Functional Programmers Paris - Building a language, in Haskell, with an LLVM backend
- Git Internals With Haskell
- Parse and generate Rocket League replays with Haskell
- silky/literate-readme - README files used to be able to lie. Now they can’t! Woo!
- Haskell Documentation, 2016 Update
- Slack BOTから始めるHaskell
- Automatically export Haskell modules
- rgleichman/glance - A visual Haskell
- erebe/greenclip
- Haskell on Bash/WSL – Windows Command Line Tools For Developers
- Type driven configuration management with Propellor - YouTube
- The typed-process library
- HaskellにおけるConfigurations Problemを解決する - m2ymの雑記帳
- Automating static analysis for Haskell projects.
- BOB 2017 - Andres Löh: Write one program, get two (or three, or many) - YouTube
- Trouble with Tribbles | Maths, Stats & Functional Programming
- Lost in Technopolis
- TerrorJack/nodejs-interop - Execute Node.js scripts in Haskell.
- Using Servant to orchestrate LXD containers
- Hotswapping Haskell · Simon Marlow
- Marwes/haskell-compiler: A mostly functional haskell compiler written in rust
- Compose :: Melbourne 2017 - Jurriaan Hage - Domain-Specific Type Error Diagnosis in GHC - YouTube
- Simon Peyton Jones Getting from A to B fast route finding on slow computers
- Anatomy of a Haskell-based Application, Revisited
- ゲーム販売webアプリケーションSYAKERAKEを支える技術,HaskellとYesodで作られています - ncaq
- Transient: Full Algebraic and monadic composability by Alberto Gómez Corona
- Growing a software architecture with types
- Simon Peyton Jones Getting from A to B fast route finding on slow computers - YouTube
- FunctionalWorks
- やる気の出ない計算機科学シリーズ その1 初めてのFormura - Qiita
- パス名がShift_JISで格納されたzipファイルの展開ツールをHaskellで書いた話 - Qiita
- Anatomy of a Haskell-based Application, Revisited :: Capital Match Tech Blog
- A Tour of Go in Haskellを作ったのと、GoとHaskellの比較 - syocy’s diary
- HaskellのABC(Haskell Advent Calendar 6th) - モナドとわたしとコモナド
- Weakly Typed Haskell
- Professional Haskellers: What are your major pain points? : haskell
- GHC Infrastructure update - YouTube
- Benjamin Kovach - Generating artwork with Haskell
- 拡張可能タングルでDo記法レスプログラミング♪ (Haskell)
- [1803.06960] Ready, Set, Verify! Applying hs-to-coq to real-world Haskell code
- Haskellでコンパイル時に「(ファイル名):L(現在の行)」を埋め込む - Qiita
- Nothing Unusual - Cloning FluxBB
-
[New ICFP functional pearl on subtracting bijections blog :: Brent -> [String]](https://byorgey.wordpress.com/2018/06/23/new-icfp-functional-pearl-on-subtracting-bijections/) - Redis Data Modeling with Rank 2 Types
- Coercions and Roles for Dummies :: Reasonably Polymorphic
- Some History of Functional Programming Languages
- Haskellでオンラインジャッジに取り組むときの入出力(前編:標準入力の受け方)
- Haskellでオンラインジャッジに取り組むときの入出力(後編:標準出力への出し方)
- Duckling (•ө•) を使って時間、日付抽出をしてみた! - Qiita
- 「アンダースタンディング コンピュテーション」を Haskell でやってみた - Qiita
- 「サイゼリヤで1000円あれば最大何kcal摂れるのか」をSMTソルバー(Z3)で解いてみた。 - Qiita
- Global Implicit Parameters – ( )
- Tweag I/O - CPP considered harmful
- Lessons learned while writing a Haskell application • gvolpe’s blog
- Tweag I/O - Revelations from repetition: Source code headers in Haskell and Python
- Haskellで学ぶフローネットワーク入門 - Qiita
- Simple Haskell
- Haskell vs OCaml
- Haskell〇〇多すぎ問題 - LugendrePublic
- Haskell For a New Decade
- Haskell with UTF-8
- A Telegram bot in Haskell on Amazon Lambda – Blog – Joachim Breitner’s Homepage
- CS Syd - How to deal with money in software
- Haskeller competency matrix
- Solving text adventure games via symbolic execution (1 August 2020)
- adventures in uncertainty: Existential Haskell
- obsidiansystems/haveibeenpwned: Haskell library that uses HIBP to evaluate passwords
- Separate Your Views; Reify Your Reasoning :: Reasonably Polymorphic
- Haskell for all: Module organization guidelines for Haskell projects
- Blockly for Haskell
- Static analysis using Haskell and Datalog
- CS SYD - The undefined trick
- Announcing Evoke, a GHC plugin for deriving type class instances quickly · taylor.fausak.me