Difference between revisions of "Blog articles"
Jump to navigation
Jump to search
DonStewart (talk | contribs) |
DonStewart (talk | contribs) (→Maths) |
||
Line 343: | Line 343: | ||
=== Maths === |
=== Maths === |
||
− | + | * [[/Mathematics|Articles on mathematics and Haskell] |
|
− | |||
− | * [http://sigfpe.blogspot.com/2006/09/learn-maths-with-haskell.html Learn Maths with Haskell] |
||
− | * [http://sigfpe.blogspot.com/2006/09/practical-synthetic-differential.html Practical Synthetic Differential Geometry] |
||
− | * [http://sigfpe.blogspot.com/2006/09/more-low-cost-geometric-algebra.html More Low Cost Geometric Algebra] |
||
− | * [http://sigfpe.blogspot.com/2006/08/algebraic-topology-in-haskell.html Algebraic Topology in Haskell] |
||
− | * [http://sigfpe.blogspot.com/2006/09/infinitesimal-types.html Infinitesimal Types] |
||
− | * [http://sigfpe.blogspot.com/2006/08/geometric-algebra-for-free_30.html Geometric Algebra for Free!] |
||
− | * [http://sigfpe.blogspot.com/2006/01/eleven-reasons-to-use-haskell-as.html Eleven Reasons to use Haskell as a Mathematician] |
||
− | * [http://sigfpe.blogspot.com/2006/06/laws-of-form-opinion.html Laws of Form: An Opinion] |
||
− | * [http://blog.mikael.johanssons.org/archive/2006/11/a-algebras-and-group-cohomology/ A-algebras and group cohomology] |
||
− | * [http://blog.mikael.johanssons.org/archive/2006/10/prototyping-thought/ Prototyping thought] |
||
− | * [http://blog.mikael.johanssons.org/archive/2006/10/computational-group-theory-in-haskell-1-in-a-series/ Computational Group Theory in Haskell] |
||
− | * [http://blog.mikael.johanssons.org/archive/2006/07/carry-bits-and-group-cohomology/ Carry bits and group cohomology] |
||
− | * [http://www.quetzal.com/sambangu/2006/12/polynomials-as-numbers Polynomials as numbers] |
||
− | * [http://vandreev.wordpress.com/2006/12/04/non-standard-analysis-and-automatic-differentiation/ Non-standard analysis, automatic differentiation, Haskell] |
||
− | * [http://vandreev.wordpress.com/2007/06/18/feistel-ciphers-and-des-in-haskell/ Feistel Ciphers and DES in Haskell] |
||
− | * [http://vandreev.wordpress.com/2007/01/07/arithmetic-coding/ Arithmetic coding in Haskell] |
||
− | * [http://www.polyomino.f2s.com/ Haskell for Maths]: commutative algebra, combinatorics, number theory, and group theory |
||
− | * [http://www.serpentine.com/blog/2007/01/11/two-dimensional-spatial-hashing-with-space-filling-curves/ Two-dimensional spatial hashing with space-filling curves] |
||
− | * [http://japple.blogspot.com/2007/02/countable-ordinals-in-haskell.html Countable Ordinals in Haskell] |
||
− | * [http://www.quetzal.com/sambangu/2006/12/polynomials-as-numbers Polynomials as numbers] |
||
− | * The Division Bell |
||
− | ** [http://praisecurseandrecurse.blogspot.com/2006/12/division-bell-tolls-for-me.html Part One] |
||
− | ** [http://praisecurseandrecurse.blogspot.com/2006/12/division-bell-tolls-for-me-part-two.html Part Two] |
||
− | ** [http://praisecurseandrecurse.blogspot.com/2006/12/division-bell-tolls-for-me-part-three.html Part Three] |
||
− | ** [http://praisecurseandrecurse.blogspot.com/2006/12/division-bell-tolls-for-me-part-four.html Part Four (Conclusion)] |
||
− | ** [http://praisecurseandrecurse.blogspot.com/2006/12/divisive-aftermath.html The Divisive Aftermath] |
||
− | * [http://www.alpheccar.org/en/posts/show/57 Haskell, PDF and penrose tilings] |
||
− | * Overloading Haskell numbers |
||
− | ** [http://augustss.blogspot.com/2007/04/overloading-haskell-numbers-part-1.html Part 1: symbolic expressions] |
||
− | ** [http://augustss.blogspot.com/2007/04/overloading-haskell-numbers-part-2.html Part 2: Forward Automatic Differentiation] |
||
− | ** [http://augustss.blogspot.com/2007/04/overloading-haskell-numbers-part-3.html Part 3: Fixed Precision] |
||
− | ** [http://augustss.blogspot.com/2007/05/i-was-asked-if-my-fixed-number-module.html Dynamic epsilons in Haskell with a bit of type hackery] |
||
− | * Number theory |
||
− | ** [http://cdsmith.wordpress.com/2007/06/24/learning-haskell-and-number-theory-gcd-and-higher-order-functions/ GCD and Higher Order Functions] |
||
− | * [http://www.alpheccar.org/en/posts/show/74 Category theory 1] |
||
− | * [http://www.alpheccar.org/en/posts/show/76 Category theory 2] |
||
− | |||
− | ==== Theorem proving ==== |
||
− | |||
− | * [http://vandreev.wordpress.com/2006/12/24/quick-and-dirty-theorem-prover/ Quick and Dirty Theorem Prover] |
||
− | |||
− | ==== Quantum computing ==== |
||
− | |||
− | * [http://sigfpe.blogspot.com/2007/02/essence-of-quantum-computing.html The Essence of Quantum Computing] |
||
− | * [http://sigfpe.blogspot.com/2007/02/monads-for-vector-spaces-probability.html Monads for vector spaces, probability and quantum mechanics pt. I] |
||
− | * [http://sigfpe.blogspot.com/2007/03/monads-vector-spaces-and-quantum.html Monads, Vector Spaces and Quantum Mechanics pt. II] |
||
− | * [http://sigfpe.blogspot.com/2007/03/independence-entanglement-and.html Independence, entanglement and decoherence with the quantum monad] |
||
− | * [http://sigfpe.blogspot.com/2007/03/shor-quantum-error-correcting-code-and.html The Shor Quantum Error Correcting Code (and a Monad for Heat)] |
||
− | * [http://www.alpheccar.org/en/posts/show/68 The Frame Of Reference Monad] |
||
− | |||
− | ==== Mathematics of Haskell ==== |
||
− | |||
− | * [http://sigfpe.blogspot.com/2006/11/why-isnt-listt-monad.html Why isn't ListT list a monad?] |
||
− | * [http://sigfpe.blogspot.com/2006/11/yoneda-lemma.html Reverse Engineering Machines with the Yoneda Lemma] |
||
− | * [http://sigfpe.blogspot.com/2006/11/variable-substitution-gives.html Variable substitution gives a...] |
||
− | * [http://sigfpe.blogspot.com/2006/11/from-l-theorem-to-spreadsheet.html From Lb's Theorem to Spreadsheet Evaluation] |
||
− | * [http://sigfpe.blogspot.com/2006/10/games-strategies-and-self-composition.html Games, Strategies and the Self-Composition of the List Monad.] |
||
− | * [http://scienceblogs.com/goodmath/2006/09/programs_are_proofs_models_and_1.php Programs are Proofs: Models and Types in Lambda Calculus] |
||
− | * [http://scienceblogs.com/goodmath/2006/11/why_haskell.php Why Haskell?] |
||
− | * [http://www.onebadseed.com/blog/?p=51 Don't need the Y combinator] |
||
− | * [http://www.rubrication.net/2007/04/21/how-a-real-module-system-should-work/ ML, Haskell and Coq] |
||
− | * [http://www.alpheccar.org/en/posts/show/70 Djinn, Coq, Monad and a bit of Haskell] |
||
− | * [http://www.alpheccar.org/en/posts/show/74 Category Theory and the category of Haskell programs] |
||
=== Testing, correctness and proofs === |
=== Testing, correctness and proofs === |
Revision as of 04:34, 28 June 2007
Many areas of Haskell have been explored in the form of blog posts. This page collects the best of those articles from across the web.
Introductions to Haskell
- ONLamp: An Introduction to Haskell
- Haskell Study Plan
- On Haskell, Intuition And Expressive Power
- Haskell: Raising the bar
- Learning the Haskell programming language
- On learning Haskell
- My evolution as a Haskell programmer
- Why its hard for imperative programmers to learn Haskell
- Flirting with Functional Programming
- Building a Firewall Against Complexity
- Haskell, bondage-and-discipline and separation-of-concerns programming
- Type systems as safety belts
- Haskell introduction for beginners
- Haskell Basics
- Haskell Preliminaries: Implementations and Tools
- Simple Functions in Haskell
- A Haskell study plan
- Haskell Eye for the Ruby Guy
First impressions
- Haskell First Impressions
- One month in Haskell
- Thoughts on one week in Haskell
- The beauty of Haskell
- Monad wrangling, and the joy of #haskell
- Learning Haskell
- I like Haskell a lot
Comparisons to other languages
Functional programming
- A fold-like procedure in C
- What's wrong with for loops
- More on what's wrong with for loops
- Liberating Myself from the von Neumann Style
- Programming Productivity and Programming Languages
- Haskell - A valuable language
- On Functional Programming
- Functional programming is a silver bullet
- Silver Bullets Incoming!
- Computers were invented to keep track of boring things
- Functional programming for the rest of us
- Zen and the Art of Functional Programming
- Thinking in types
Programming exercises
- Diff in Haskell
- Introductory Haskell: Solving the Sorting-It-Out Kata
- A Simple RPN Calculator in Haskell
- Eratosthenes sieve
- Software Cipher
- Secret Santas in Haskell I: Preliminaries
- Secret Santas in Haskell II: Orbits and Lists
- Secret Santas in Haskell III: Lather, Rinse, Repeat 1
- The Dot-Matrix Printhead: a Haskell Toy
- The Revised Dot-Matrix Printhead
- Run length encoding:
- Overlap function in Haskell for rectangles
- Tying Knots Generically
- A quick and dirty theorem prover in Haskell
- Brainf*k interpreter in Haskell
- FourFours in Haskell
- Using Bayesian filtering instead of 'if' in Haskell
- Prime sieves in Haskell
- Bowling in Haskell
- Norvig's spell checker and idiomatic Haskell
Games
Laziness
Records
IO
- Haskell I/O for imperative programmers
- Directory tree printing:
- Introductory console IO in Haskell
- Listing files in Haskell
- Playing unsafe Haskell
- separating IO from logic -- example
- Programming Haskell
- Design Patterns in Haskell: bracket
- 7 Rules for IO in Haskell
- File related hacking
Command line arguments
Unix
- Simple Unix Tools in Elegant Haskell
- HSH: a Haskell scripting environment
- Function composition and unix pipes
- Practical Haskell: shell scripting with error handling and privilege separation
- A simple file filter
- Signal handling
Network
HTTP
TCP
- Simple STM TCP server
- Haskell's 'interact' with TCP sockets
- Port Scanner in Haskell
- Simple socket programming:
- On haskell: writing a packet sniffer
- A simple echo server
IRC
Parallelism and Concurrency
- Threads Considered Harmful (discusses The Problem with Threads)
- STM and IO
- Synchronised threads:
- More Haskell parallelism
Performance
Parsing
- Parser combinators
- Monadic parsing
- Adventures in Haskell: the Parsec magic weapon
- Adventures in Haskell: parsing the game world
- Combinator parsing
- Parser with Writer monad
- Simple Parsec Example: HTMangL
- Parsers, Parsec and Haskell
- Interesting parsers in Haskell
- Explicit Typing, Trail Blazing, and Packrat Parsing
- Playing fast and loose with Parsec for parsing in Haskell
- Config file parsing
- Parsing JSON in Haskell
- Write yourself a Scheme in 48 hours
- A beginner with Parsec
Code generation
- Writing x86 code generators with Harpy:
Monads
- The monad laws
- The Trivial Monad
- Tracking tainted data: Homeland Security Threat Level Monad
- Monads: a field guide
- Variable substitution gives a ... monad
- The monad behind every zipper
- Monads for vector spaces, probability and quantum mechanics pt. I
- Monads, Vector Spaces and Quantum Mechanics pt. II
- How to write tolerably efficient optimzation code without really trying...
- Quick interpreters with the Reader monad
- Monads
- More on Haskell, Side Effects and Code Reuse
- A First Step Into Monads
- More Monads: Stateful Programming
- The theory of monads
- A newbie in Haskell land or another monad tutorial
- A newbie in Haskell land : The (->) monad
- Smart classification using Bayesian monads
- 3 open problems with monads
- Monads in 15 minutes: Backtracking and Maybe
- How to make Data.Set a monad
- Monads work because they have a tight interface
- Haskell: bootstrapping into a clue about monads
- Why monads matter
- Monads through Pictures
- Monads as universe helpers
- Simple state monad
- repeat and sequence
- What's a monad?
Monad transformers
- A twisted history of monad transformers
- How To Use Monad Transformers
- Local and global side effects with monad transformers
- Grok monad transformers
- A Simple Game with StateT
Arrows
Comonads
- Comonads and reading from the future
- Evaluating cellular automata is co-monadic
- Understanding comonads
Error handling and exceptions
- Error handling in Haskell
- Some Very Basic Haskell and Thoughts on Error Diagnosis
- 8 ways to report errors in Haskell
- Towards Better Error Handling
Types
- A type-based solution to the 'strings problem'
- Generalised Algebraic Data Types, Phantom Types, and Dependent Types
- Functions, Types, Function Types, and Type Inference
- Building Datatypes in Haskell (part 1)
- Rank-2 polymorphism is a strange thing
- Scientific.Dimension: Type Arithmetic and Physical Units in Haskell
Type classes
Data structures
- Queues without pointers
- A Tree Grows Up in Haskell: Building a Dictionary Type
- Haskell Stacks : Two Different Ways
- A counter datatype with constant-time update
- Map fusion: Making Haskell 225% faster
- Roll Your Own Window Manager: Tracking Focus with a Zipper
Strings
Algorithms and techniques
Folds
Dynamic programming
Mutable data
Sections and Currying
GUIs
Databases
Graphics
Web and XML
- Haskell and Web Applications
- Ruby and Haskell: write your Rails backend code in Haskell instead of C
- Writing a Simple Search Engine in Haskell
- Haskell and the web: some ideas in progress
- A search engine (core) written in Haskell
- Haskell Transactional Cache
HTML
XML, Atom, RSS
- Really simple Atom syndication
- A simple RSS aggregator in 50 lines of Haskell using HXT
- Using the Haskell XML Toolbox
Maths
- [[Blog articles/Mathematics|Articles on mathematics and Haskell]
Testing, correctness and proofs
- Introduction to QuickCheck
- QuickChecking a window manager
- On Unit Testing and Type Safety
- Robustness and QuickCheck
- Does XMonad crash? On proving pattern coverage with Catch
- Preconditions on XMonad
Regular expressions
The foreign function interface
- Simple demonstration of Haskell FFI
- C and Haskell sitting in a tree
- Haskell and C: functions returning more than one value
Tips and tricks
Cabal and libraries
- Cabal and rpms
- Getting started with installing third-party Haskell packages
- The lambda revolution: how you can help
- The lambda revolution, Episode V, the deb strikes back
- Questions on Haskell Style (and Polynomials redux)
- Using the Haskell package system
- How To Install Haskell Haddock on Mac OS X