Difference between revisions of "Blog articles"
Jump to navigation
Jump to search
DonStewart (talk | contribs) |
DonStewart (talk | contribs) (more blogs) |
||
Line 4: | Line 4: | ||
=== Introductions to Haskell === |
=== Introductions to Haskell === |
||
+ | * [http://www.onlamp.com/pub/a/onlamp/2007/05/21/an-introduction-to-haskell---part-1-why-haskell.html ONLamp: An Introduction to Haskell] |
||
* [http://www.alpheccar.org/en/posts/show/67 Haskell Study Plan] |
* [http://www.alpheccar.org/en/posts/show/67 Haskell Study Plan] |
||
* [http://programming.reddit.com/goto?id=uzuc On Haskell, Intuition And Expressive Power] |
* [http://programming.reddit.com/goto?id=uzuc On Haskell, Intuition And Expressive Power] |
||
Line 84: | Line 85: | ||
* [http://blogs.msdn.com/wesdyer/archive/2007/03/01/immutability-purity-and-referential-transparency.aspx Immutability, Purity, and Referential Transparency in C#] |
* [http://blogs.msdn.com/wesdyer/archive/2007/03/01/immutability-purity-and-referential-transparency.aspx Immutability, Purity, and Referential Transparency in C#] |
||
* [http://themechanicalbride.blogspot.com/2007/04/haskell-for-c-3-programmers.html Haskell for C# 3 Programmers] |
* [http://themechanicalbride.blogspot.com/2007/04/haskell-for-c-3-programmers.html Haskell for C# 3 Programmers] |
||
+ | * [http://lukeplant.me.uk/blog.php?id=1107301659 Null pointers vs None vs Maybe] |
||
==== Scala ==== |
==== Scala ==== |
||
Line 168: | Line 170: | ||
** [http://www.xprogramming.com/xpmag/dbcHaskellBowling.htm Haskell Bowling] |
** [http://www.xprogramming.com/xpmag/dbcHaskellBowling.htm Haskell Bowling] |
||
** [http://www.randomhacks.net/articles/2007/04/28/bowling-in-haskell Bowling in Haskell Response] |
** [http://www.randomhacks.net/articles/2007/04/28/bowling-in-haskell Bowling in Haskell Response] |
||
+ | * [http://www.serpentine.com/blog/2007/05/14/norvigs-spell-checker-and-idiomatic-haskell/ Norvig's spell checker and idiomatic Haskell] |
||
==== Games ==== |
==== Games ==== |
||
Line 233: | Line 236: | ||
** [http://metavar.blogspot.com/2007/03/simple-socket-programming-2-revenge-of.html Part 2] |
** [http://metavar.blogspot.com/2007/03/simple-socket-programming-2-revenge-of.html Part 2] |
||
* [http://austin.youareinferior.net/?q=node/24 On haskell: writing a packet sniffer] |
* [http://austin.youareinferior.net/?q=node/24 On haskell: writing a packet sniffer] |
||
+ | * [http://abstractabsurd.blogspot.com/2007/05/couple-of-silly-examples.html A simple echo server] |
||
==== IRC ==== |
==== IRC ==== |
||
Line 272: | Line 276: | ||
* [http://notes-on-haskell.blogspot.com/2007/05/parsing-json.html Parsing JSON in Haskell] |
* [http://notes-on-haskell.blogspot.com/2007/05/parsing-json.html Parsing JSON in Haskell] |
||
* [http://halogen.note.amherst.edu/~jdtang/scheme_in_48/tutorial/overview.html Write yourself a Scheme in 48 hours] |
* [http://halogen.note.amherst.edu/~jdtang/scheme_in_48/tutorial/overview.html Write yourself a Scheme in 48 hours] |
||
+ | * [http://davblog48.blogspot.com/2007/05/parsec.html A beginner with Parsec] |
||
=== Monads === |
=== Monads === |
||
Line 302: | Line 307: | ||
* [http://therning.org/magnus/archives/215 Simple state monad] |
* [http://therning.org/magnus/archives/215 Simple state monad] |
||
* [http://therning.org/magnus/archives/269 repeat and sequence] |
* [http://therning.org/magnus/archives/269 repeat and sequence] |
||
+ | * [http://lukeplant.me.uk/blog.php?id=1107301659 What's a monad?] |
||
==== Monad transformers ==== |
==== Monad transformers ==== |
||
Line 336: | Line 342: | ||
* [http://scienceblogs.com/goodmath/2006/12/building_datatypes_in_haskell_1.php Building Datatypes in Haskell (part 1)] |
* [http://scienceblogs.com/goodmath/2006/12/building_datatypes_in_haskell_1.php Building Datatypes in Haskell (part 1)] |
||
* [http://cucumariid.livejournal.com/36757.html Rank-2 polymorphism is a strange thing] |
* [http://cucumariid.livejournal.com/36757.html Rank-2 polymorphism is a strange thing] |
||
+ | * [http://liftm.wordpress.com/2007/06/03/scientificdimension-type-arithmetic-and-physical-units-in-haskell/ Scientific.Dimension: Type Arithmetic and Physical Units in Haskell] |
||
==== Type classes ==== |
==== Type classes ==== |
||
Line 349: | Line 356: | ||
* [http://syntaxfree.wordpress.com/2007/02/11/finally-some-hacking-of-my-own-a-counter-datatype/ A counter datatype with constant-time update] |
* [http://syntaxfree.wordpress.com/2007/02/11/finally-some-hacking-of-my-own-a-counter-datatype/ A counter datatype with constant-time update] |
||
* [http://www.randomhacks.net/articles/2007/02/10/map-fusion-and-haskell-performance Map fusion: Making Haskell 225% faster] |
* [http://www.randomhacks.net/articles/2007/02/10/map-fusion-and-haskell-performance Map fusion: Making Haskell 225% faster] |
||
+ | * [http://cgi.cse.unsw.edu.au/~dons/blog/2007/05/17#xmonad_part1b_zipper Roll Your Own Window Manager: Tracking Focus with a Zipper] |
||
====Strings==== |
====Strings==== |
||
Line 355: | Line 363: | ||
=== Algorithms and techniques === |
=== Algorithms and techniques === |
||
+ | |||
+ | * [http://twan.home.fmf.nl/blog/haskell/Knuth-Morris-Pratt-in-Haskell.details Knuth-Morris-Pratt in Haskell] |
||
+ | * [http://illicittech.blogspot.com/2007/06/travelling-salesman-problem.html Travelling Salesman Problem: Introduction (in Haskell)] |
||
====Folds==== |
====Folds==== |
||
Line 380: | Line 391: | ||
* [http://www.ventonegro.org/?p=95 Haskell in the real, mundane world] |
* [http://www.ventonegro.org/?p=95 Haskell in the real, mundane world] |
||
* [http://araujoluis.blogspot.com/2007/04/haskell-gui-programing.html Haskell GUI Programing] |
* [http://araujoluis.blogspot.com/2007/04/haskell-gui-programing.html Haskell GUI Programing] |
||
+ | |||
+ | === Databases === |
||
+ | |||
+ | * [http://davblog48.blogspot.com/2007/05/trying-to-learn-haskell-database.html Learning Haskell databases] |
||
=== Graphics === |
=== Graphics === |
||
Line 443: | Line 458: | ||
** [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-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/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] |
||
==== Theorem proving ==== |
==== Theorem proving ==== |
||
Line 458: | Line 474: | ||
==== Mathematics of Haskell ==== |
==== 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/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/yoneda-lemma.html Reverse Engineering Machines with the Yoneda Lemma] |
||
Line 466: | Line 483: | ||
* [http://scienceblogs.com/goodmath/2006/11/why_haskell.php Why Haskell?] |
* [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.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] |
||
− | === Testing === |
+ | === Testing, correctness and proofs === |
* [http://haskell.org/haskellwiki/Introduction_to_QuickCheck Introduction to QuickCheck] |
* [http://haskell.org/haskellwiki/Introduction_to_QuickCheck Introduction to QuickCheck] |
||
Line 473: | Line 492: | ||
* [http://blogs.teamb.com/craigstuntz/archive/2006/12/08/UnitTestingAndTypeSafety.aspx On Unit Testing and Type Safety] |
* [http://blogs.teamb.com/craigstuntz/archive/2006/12/08/UnitTestingAndTypeSafety.aspx On Unit Testing and Type Safety] |
||
* [http://abstractabsurd.blogspot.com/2007/02/sussman-robustness-quickcheck.html Robustness and QuickCheck] |
* [http://abstractabsurd.blogspot.com/2007/02/sussman-robustness-quickcheck.html Robustness and QuickCheck] |
||
+ | * [http://neilmitchell.blogspot.com/2007/05/does-xmonad-crash.html Does XMonad crash? On proving pattern coverage with Catch] |
||
+ | * [http://neilmitchell.blogspot.com/2007/05/preconditions-on-xmonad.html Preconditions on XMonad] |
||
=== Regular expressions === |
=== Regular expressions === |
||
Line 478: | Line 499: | ||
* [http://www.serpentine.com/blog/2007/02/27/a-haskell-regular-expression-tutorial/ A regular expression tutorial] |
* [http://www.serpentine.com/blog/2007/02/27/a-haskell-regular-expression-tutorial/ A regular expression tutorial] |
||
* [http://haskell.org/haskellwiki/Regular_expressions Using the new regex packages] |
* [http://haskell.org/haskellwiki/Regular_expressions Using the new regex packages] |
||
+ | * [http://michaelspeer.blogspot.com/2007/05/initial-code-at-regular-expressions-in.html Regular expressions in Haskell] |
||
=== The foreign function interface === |
=== The foreign function interface === |
||
Line 499: | Line 521: | ||
* [http://www.brandonwerner.com/2007/06/10/how-to-install-haskell-haddock-on-mac-os-x/ How To Install Haskell Haddock on Mac OS X] |
* [http://www.brandonwerner.com/2007/06/10/how-to-install-haskell-haddock-on-mac-os-x/ How To Install Haskell Haddock on Mac OS X] |
||
− | === |
+ | === Robots and Hardware === |
* [http://iguanarama.com/blog/?p=8 Haskell and HDL's] |
* [http://iguanarama.com/blog/?p=8 Haskell and HDL's] |
||
+ | * [http://sigfpe.blogspot.com/2007/05/haskell-incarnate.html Haskell incarnate: robots and Haskell] |
||
+ | |||
+ | === Neural networks === |
||
+ | * [http://jpmoresmau.blogspot.com/2007/06/very-dumb-neural-network-in-haskell.html A neural network in Haskell] |
||
[[Category:Tutorials]] |
[[Category:Tutorials]] |
Revision as of 01:35, 14 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
Ruby
- Ruby vs Haskell: choose what works
- Haskell: open secret in Ruby land
- Haskell Eye for the Ruby Guy
- Monads in Ruby
- RushCheck, a lightweight random testing tool for Ruby similar to QuickCheck
- part 1
- zip and transpose
- Pattern matching in Ruby
Erlang
Ada
Java
- More Haskell in Java 7 or 8?
- Type classes in Java
- Closures and bottom for Java
- An infinite list in Java
- Maybe monad in Java
Perl 6
Eiffel
Javascript
C
C#
- The New Lambda Expressions Feature in C# 3.0
- Immutability, Purity, and Referential Transparency in C#
- Haskell for C# 3 Programmers
- Null pointers vs None vs Maybe
Scala
CAL
Python
- Haskell versus Python
- Using Haskell in Python: haskellembed
- Understanding Monads Via Python List Comprehensions
Scheme
Forth
Factor
Lisp
Lua
Qi
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
- 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
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
- 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
Haskell for mathematics
- Learn Maths with Haskell
- Practical Synthetic Differential Geometry
- More Low Cost Geometric Algebra
- Algebraic Topology in Haskell
- Infinitesimal Types
- Geometric Algebra for Free!
- Eleven Reasons to use Haskell as a Mathematician
- Laws of Form: An Opinion
- A-algebras and group cohomology
- Prototyping thought
- Computational Group Theory in Haskell
- Carry bits and group cohomology
- Polynomials as numbers
- Non-standard analysis, automatic differentiation, Haskell
- Haskell for Maths: commutative algebra, combinatorics, number theory, and group theory
- Two-dimensional spatial hashing with space-filling curves
- Arithmetic coding in Haskell
- Countable Ordinals in Haskell
- Polynomials as numbers
- The Division Bell
- Haskell, PDF and penrose tilings
- Overloading Haskell numbers
Theorem proving
Quantum computing
- The Essence of Quantum Computing
- Monads for vector spaces, probability and quantum mechanics pt. I
- Monads, Vector Spaces and Quantum Mechanics pt. II
- Independence, entanglement and decoherence with the quantum monad
- The Shor Quantum Error Correcting Code (and a Monad for Heat)
- The Frame Of Reference Monad
Mathematics of Haskell
- Why isn't ListT list a monad?
- Reverse Engineering Machines with the Yoneda Lemma
- Variable substitution gives a...
- From Lb's Theorem to Spreadsheet Evaluation
- Games, Strategies and the Self-Composition of the List Monad.
- Programs are Proofs: Models and Types in Lambda Calculus
- Why Haskell?
- Don't need the Y combinator
- ML, Haskell and Coq
- Djinn, Coq, Monad and a bit of 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