~vonfry/awesome

ref: 970748db1d37a6889973f88e86494679a563ca71 awesome/development/lang/haskell.org -rw-r--r-- 13.8 KiB
970748dbVonfry os/windows: add hex viewer 7 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
:PROPERTIES:
:ID:       8e3e4532-76f6-4794-aa53-8b0119188fa1
:END:
#+TITLE: Haskell
#+AUTHOR: Vonfry
* Syntax
  :PROPERTIES:
  :ID:       82f45854-f45c-4a25-a2b9-54032f49f3a6
  :END:
  - [[https://github.com/haskell/haskell-report][report]] :: Haskell Language Report

* Coding Style
  :PROPERTIES:
  :ID:       0b3493c2-8365-4093-a69c-ec34d4c98df1
  :END:
  - [[https://wiki.haskell.org/Category:Style][wiki: style]] ::
  - [[https://wiki.haskell.org/Category:Idioms][wiki: idiomls]] ::
  - [[https://github.com/tibbe/haskell-style-guide][tibble]] ::
      - hindent ::
  - [[https://github.com/facebookincubator/retrie][retrie]] ::

* Compiler
  :PROPERTIES:
  :ID:       597184df-4c59-4005-b8ff-b26e8e99b8f2
  :END:
  - [[https://www.haskell.org/ghc/][ghc]] ::
    - [[https://github.com/ndmitchell/ghcid][ghcid]] :: Very low feature GHCi based IDE
    - [[https://github.com/ghc-proposals/ghc-proposals][ghc proposals]] :: This repository contains specifications for proposed
      changes to the Glasgow Haskell Compiler. The purpose of the GHC proposal
      process and of the GHC Steering Committee is to broaden the discussion
      of the evolution of GHC.
    - [[https://github.com/sdiehl/papers][ghc papers]] :: some pdfs for ghc implements. The whole lists can be found
      in the wiki in ghc repo.
  - [[https://github.com/ghcjs/ghcjs][ghcjs]] :: write web script by haskell
** Parser
   - alex ::
     - [[https://devanla.com/posts/wya-lexer.html][tutor]], [[https://web.archive.org/web/20210409010429/https://devanla.com/posts/wya-lexer.html][archive]] :: example to python
   - happy ::
* Package & project
  :PROPERTIES:
  :ID:       e09de8d8-8c94-4b7e-ad76-ecf5208fdea6
  :END:
  - [[http://hackage.haskell.org/][hackage]] ::
  - cabal ::
  - [[http://www.haskellstack.org/][stack]] :: Work with cabal to manage whole project.
      - [[https://www.stackage.org/][stackage]] :: "Stable Hackage": vetted consistent packages from Hackage
      - stack-run :: A plugin, quickly run the project.
  - [[https://github.com/nmattia/snack][snack]] :: Nix-based incremental Haskell build tool
  - shake ::

* Tool Chains
  :PROPERTIES:
  :ID:       ccf1cf41-da63-42ff-baad-d67c9dd3fd24
  :END:
  - haddock :: comment to document
      - [[https://hackage.haskell.org/package/haddock][cheatsheet]] ::
  - [[https://hackage.haskell.org/package/CheatSheet][cheatsheet]] ::
  - [[https://www.haskell.org/hoogle/][hoogle]] :: quickly searching
  - [[https://github.com/dhall-lang/dhall-haskell][dhall]] :: a config language
  - [[https://github.com/yav/graphmod][graphmod]] :: A utility for displaying the module dependencies of Haskell programs.

* CI
  :PROPERTIES:
  :ID:       2ad954f4-6f98-4357-a460-da8b579c5fc8
  :END:
  - [[https://github.com/haskell-CI/haskell-ci][haskell-ci]] :: Scripts and instructions for using CI services (e.g. Travis CI or Appveyor) with multiple GHC configurations

* Cheatsheet
  :PROPERTIES:
  :ID:       87f35dea-a72d-4fd2-9e9d-03314404b32e
  :END:
  - [[https://github.com/takenobu-hs/haskell-symbol-search-cheatsheet][symbol search cheatsheet]] ::

* Checklist
  :PROPERTIES:
  :ID:       bb255970-c9a7-4cd2-9cec-1ed1c27045ac
  :END:
  - [[https://github.com/haskell-perf/checklist][checklist]] :: A checklist to optimize code

* IDE
  :PROPERTIES:
  :ID:       76fc5cd6-2ab9-44d2-9934-3ecd1fbad8f2
  :END:
  - [[https://github.com/haskell/haskell-language-server][haskell-language-server]] :: A framework which can work with vim, emacs and others
  - [[https://github.com/leksah/leksah][leksah]] ::

* Tutor
  :PROPERTIES:
  :ID:       a4a98e32-b2a5-4e50-9c1d-3a8f15d88c87
  :END:
  - real world haskell ::
      - [[https://github.com/huangz1990/real-world-haskell-cn][cn]] ::
  - learn4haskell ::
  - [[https://leanpub.com/magicalhaskell][magicalhaskell]] ::

** Compiler
   :PROPERTIES:
   :ID:       72c223fb-50bf-4507-9510-b92bd70ab776
   :END:
   - [[http://dev.stephendiehl.com/fun/][write you a haskell]] :: Building a modern functional compiler from first
     principles. [[https://web.archive.org/web/20220322105505/http://dev.stephendiehl.com/fun/][web archive]]
* Misc
  :PROPERTIES:
  :ID:       0446d055-8c21-4673-8e06-bec77fb17eeb
  :END:
  - [[http://www.luna-lang.org/][luna-lang]] :: a visual lang.
  - [[https://www.idris-lang.org/][Idris]] :: A Dependently Typed Functional Programming Language

* Awesome
  :PROPERTIES:
  :ID:       5fe632f1-15d7-4768-b0a0-30df0ca8ba12
  :END:
  - [[https://github.com/krispo/awesome-haskell][haskell]] ::
  - [[https://haskell.pl-a.net/][haskell planetarium]] ::
  - [[https://github.com/albohlabs/awesome-haskell][for beginner]] ::
  - [[https://github.com/sdiehl/wiwinwlh][wiwinwlh]] ::
  - *[[https://toolbox.brick.do/][toolbox]]* :: Useful tools when developing haskell

* Article
  :PROPERTIES:
  :ID:       190722fb-e866-45d2-9c05-291315f91bff
  :END:
  - [[https://www.williamyaoh.com/posts/2019-11-24-design-and-testing-articles.html][A LIST OF HASKELL ARTICLES ON GOOD DESIGN, GOOD TESTING]] ::
  - [[http://www.willamette.edu/~fruehr/haskell/evolution.html][The Evolution of a Haskell Programmer ]] ::
  - [[https://stackoverflow.com/questions/6724434/how-to-debug-haskell-code][How to debug Haskell code?]] ::
  - [[https://stackoverflow.com/questions/4156727/what-is-the-difference-between-pattern-matching-and-guards][What is the difference between Pattern Matching and Guards?]] ::
  - 范畴论完全装逼手册 / Grokking Monad ::
      - [[https://web.archive.org/web/20191027082028/https://blog.oyanglul.us/grokking-monad/part1][part1]] ::
      - [[https://web.archive.org/web/20191027082045/https://blog.oyanglul.us/grokking-monad/part2][part2]] ::
      - [[https://web.archive.org/web/20191027082055/https://blog.oyanglul.us/grokking-monad/part3][part3]] ::
  - [[https://web.archive.org/web/20201211002735/https://www.snoyman.com/series/haskell-bad-parts][haskell-bad-parts]] ::

* Library
  :PROPERTIES:
  :ID:       fd60b09a-f18c-455a-a44e-32bed8a936b8
  :END:
** Codc
   :PROPERTIES:
   :ID:       a029ef7f-7845-4ede-8fc5-540f4fc2ab4e
   :END:
*** Compression
    - zstd ::
*** Serialize
    - serialise :: control format
    - cereal ::
** CLI
   :PROPERTIES:
   :ID:       b723ef46-a881-476f-a9fe-6890a213153c
   :END:
*** Arguments
    - optparse-applicative :: [the best one] Applicative option parser
    - cmdargs :: [similar to the above] command line argument processing
    - optparse-generic :: This library auto-generates an
      optparse-applicative-compatible Parser from any data type that derives the
      Generic interface.
*** Input
    - haskeline ::

*** Interpreter
    - ihaskell ::
** Data
   :PROPERTIES:
   :ID:       6a0a80e6-25ae-46ea-b6b5-130e39bc7add
   :END:
   - [[https://github.com/isomorphism/these][these]] :: An either-or-both data type, with corresponding hybrid error/writer monad transformer.
*** String
   - Text :: utf
   - ByteString :: binary, ascii
   - fmt :: A new formatting library that tries to be simple to understand
     while still being powerful and providing more convenience features than
     other libraries (like functions for pretty-printing maps and lists, or a
     function for printing arbitrary datatypes using generics).
   - text-icu :: unicode aware
   - lucid :: html
   - xml-conduit :: xml
   - aeson :: json
   - [[https://hackage.haskell.org/package/json-to-haskell][json-to-haskell]] :: generate haskell code by json data
*** Cryptography
    - password :: Hashing and checking of passwords
    - cryptonite :: many algorithms
*** Parsing
    - megaparsec :: Monadic parser combinators
*** Struct
    - ilist :: Optimised list functions for doing index-related things. They're
      faster than common idioms in all cases, they avoid space leaks, and
      sometimes they fuse better as well.
    - containers ::
        - sets :: for set-like things
        - dictionaries :: dictionaries, hashmaps, maps, etc.
        - sequences :: lists, vectors/arrays, sequences, etc.
    - unordered-containers ::
    - stm-containers :: This library is based on an STM-specialized
      implementation of Hash Array Mapped Trie. It provides efficient
      implementations of Map, Set and other data structures, which starting from
      version 1 perform even better than their counterparts from
      "unordered-containers", but also scale well on concurrent access
      patterns.
    - [[https://github.com/ZHaskell/z-data][z-data]] :: array, slices and text
*** Control
    - pipes :: stream processing
    - recursion schemes :: Generalized bananas, lenses and barbed wire
** Game
   :PROPERTIES:
   :ID:       5d71af26-771c-41d8-81c4-8914883a732d
   :END:
   - [[https://github.com/LambdaHack/LambdaHack][LambdaHack]] :: Haskell game engine library for roguelike dungeon crawlers; please offer feedback
** Graphisc
   :PROPERTIES:
   :ID:       858c04ce-7c61-462a-820e-85d72a4a224e
   :END:
   - gloss :: Gloss hides the pain of drawing simple vector graphics behind a nice data type and a few display functions. Gloss uses OpenGL under the hood, but you won't need to worry about any of that. Get something cool on the screen in under 10 minutes.
** Link
   :PROPERTIES:
   :ID:       fe4ad51e-4104-4d0c-ae56-e2fd9770e730
   :END:
   - plugins :: Dynamic linking for Haskell and C objects
** Math
   :PROPERTIES:
   :ID:       9c9a745c-e2fd-4f8e-abcf-51d5e329194b
   :END:
   - hmatrix :: Linear algebra and numerical computation
   - dimensional :: Dimensional library variant built on Data Kinds, Closed Type
     Families, TypeNats (GHC 7.8+).
   - what4 :: Symbolic formula representation and solver interaction library
   - group-theory :: the theory of group
   - linear :: Low-dimensional linear algebra primitives for Haskell. This lib
     contains comparsion with epsilon.
** Monadic
   :PROPERTIES:
   :ID:       8f68a258-4899-4dca-bca1-3312beffd21a
   :END:
   - transformers ::
   - mtl ::
** Net
   :PROPERTIES:
   :ID:       57eb43c8-ca07-4817-8a3a-1143f60a0c07
   :END:
*** UI
    - [[https://gitlab.com/platonic/shpadoinkle][shpadoinkle]] :: web ui
*** Request
    - req ::
    - wreq :: scripting
    - http-client-tls :: everything else(client)
    - servant-client :: both the client and the server.
    - haxl :: A Haskell library that simplifies access to remote data, such as
      databases or web-based services.
*** Server
   - [[Year:month:day][yesod]] :: A RESTful Haskell web framework built on WAI.
   - servant :: servant is a set of Haskell libraries for writing type-safe web
     applications but also deriving clients (in Haskell and other languages) or
     generating documentation for them, and more.
** Benchmarking
   :PROPERTIES:
   :ID:       29953593-c73f-4519-8c0c-65a38762e766
   :END:
   - criterion :: This library provides a powerful but simple way to measure
     software performance. It provides both a framework for executing and
     analysing benchmarks and a set of driver functions that makes it easy to
     build and run benchmarks, and to analyse their results.
   - gauge :: 'gauge' is a lean, maintained fork of Criterion
** Foundation
   :PROPERTIES:
   :ID:       0615ab4f-058f-4aad-9d47-9b4e9459a8de
   :END:
   - foundation :: a replace for prelude
   - [[https://github.com/polysemy-research/polysemy][polysemy]] :: gemini higher-order, no-boilerplate, zero-cost monads
** Symbolic
   :PROPERTIES:
   :ID:       66eb20f9-833e-4bc9-b169-664b2f4f7ab9
   :END:
   - [[https://github.com/GaloisInc/crucible][crucible]] :: Crucible is a library for symbolic simulation of imperative programs
** Test
   :PROPERTIES:
   :ID:       7faebf0a-fa9d-429c-a00c-cadc13f43f47
   :END:
   - quickcheck ::
   - hspce ::
   - tasty ::
   - haskell-hedgehog :: Release with confidence, state-of-the-art property
     testing for Haskell.
   - [[https://github.com/mesabloo/diagnose][diagnose]] :: Beautiful error reporting done easily
** System
   :PROPERTIES:
   :ID:       0317689a-7265-4907-ae03-a830df790e30
   :END:
   - random ::
   - retry :: retry io action
** C preprocessor
   :PROPERTIES:
   :ID:       d59f973d-166d-4536-a868-392f1d2af7dc
   :END:
   - cpphs ::
** Misc
   - [[https://github.com/reflex-frp/reflex][reflex]] :: Interactive programs without callbacks or
     side-effects. Functional Reactive Programming (FRP) uses composable events
     and time-varying values to describe interactive systems as pure
     functions. Just like other pure functional code, functional reactive code
     is easier to get right on the first try, maintain, and reuse.
** Database
   :PROPERTIES:
   :ID:       78d246b1-850b-467c-8cd4-042035d6d8fc
   :END:
   - [[https://github.com/travitch/datalog][datalog]] :: This is a pure Haskell implementation of Datalog, as a library
* Utils
  :PROPERTIES:
  :ID:       4575d700-48ea-47ee-9488-7ed431687cf1
  :END:
** Blog
   :PROPERTIES:
   :ID:       0c637ebd-cb7c-4b28-a144-090401bd2ccd
   :END:
   - hakyll :: static blog
** Generic
   :PROPERTIES:
   :ID:       60bad86a-ebee-4d3d-b223-3c247b82730f
   :END:
   - [[https://generics.jasperwoudenberg.com/][generics]] :: archive
** GHC
   :PROPERTIES:
   :ID:       66548bd2-bc37-4e89-a4f1-cb013a43fcc3
   :END:
   - [[https://github.com/bgamari/ghc-utils][bgamari/ghc-utils]]
   - [[https://github.com/alpmestan/ghc.nix][ghc with nix support]] :: Nix (shell) expression for working on GHC
** Configure
   :PROPERTIES:
   :ID:       7a6f9157-91fb-4277-90b4-946540f64f67
   :END:
   - hnix :: Haskell implementation of the Nix language
   - dhall ::
** Performance
   :PROPERTIES:
   :ID:       7a6db49f-bdaa-450c-91a5-4360b32a9b69
   :END:
   - ~ghc -profile~ ::
** AI
   :PROPERTIES:
   :ID:       215ddcb3-d551-4c87-9f3d-38cea1fabaf2
   :END:
   - [[https://github.com/hasktorch/hasktorch][hasktorch]] :: Tensors and neural networks in Haskell
* Amazing
  :PROPERTIES:
  :ID:       dfc35d1a-1d61-4878-8190-bebd39fa7f80
  :END:
  - [[https://github.com/dpiponi/quine-central][dpiponi/quine-central]] :: This is a Haskell program that prints out a Perl program that prints out a Python program that prints out a Ruby program that prints out a C program that prints out a Java program that prints out the original program.