Difference between revisions of "Blog articles"
Jump to navigation
Jump to search
DonStewart (talk | contribs) (change links to Pablo's stuff) |
DonStewart (talk | contribs) (Prune dead links) |
||
Line 19: | Line 19: | ||
* [http://scienceblogs.com/goodmath/2006/11/haskell_preliminaries_implemen.php Haskell Preliminaries: Implementations and Tools] |
* [http://scienceblogs.com/goodmath/2006/11/haskell_preliminaries_implemen.php Haskell Preliminaries: Implementations and Tools] |
||
* [http://scienceblogs.com/goodmath/2006/11/simple_functions_in_haskell_1.php Simple Functions in Haskell] |
* [http://scienceblogs.com/goodmath/2006/11/simple_functions_in_haskell_1.php Simple Functions in Haskell] |
||
− | * [http://monad.carnalreason.org/wordpress/?p=20 Reconsidering my approach to learning Haskell] |
||
* [http://metacircular.wordpress.com/2007/03/05/a-haskell-study-plan/ A Haskell study plan] |
* [http://metacircular.wordpress.com/2007/03/05/a-haskell-study-plan/ A Haskell study plan] |
||
* [http://antoniocangiano.com/articles/2007/03/13/haskell-eye-for-the-ruby-guy Haskell Eye for the Ruby Guy] |
* [http://antoniocangiano.com/articles/2007/03/13/haskell-eye-for-the-ruby-guy Haskell Eye for the Ruby Guy] |
||
Line 28: | Line 27: | ||
* [http://blogs.nubgames.com/code/?p=17 One month in Haskell] |
* [http://blogs.nubgames.com/code/?p=17 One month in Haskell] |
||
* [http://kevin.scaldeferri.com/blog/2007/02/12/OneWeek.html Thoughts on one week in Haskell] |
* [http://kevin.scaldeferri.com/blog/2007/02/12/OneWeek.html Thoughts on one week in Haskell] |
||
− | * [http://www.stonecode.org/blog/?p=101 Haskell, first impressions (with sexy results)] |
||
* [http://clemens.endorphin.org/weblog/archives/2006-06.shtml#e2006-06-23T09_16_52.txt The beauty of Haskell] |
* [http://clemens.endorphin.org/weblog/archives/2006-06.shtml#e2006-06-23T09_16_52.txt The beauty of Haskell] |
||
* [http://gimbo.org.uk/blog/2007/03/08/the_mapm_and_haskell_irc_post/ Monad wrangling, and the joy of #haskell] |
* [http://gimbo.org.uk/blog/2007/03/08/the_mapm_and_haskell_irc_post/ Monad wrangling, and the joy of #haskell] |
||
Line 141: | Line 139: | ||
* [http://dynamic.ropine.com/yesh/article/computers-were-invented-to-keep-track-of-boring-things Computers were invented to keep track of boring things] |
* [http://dynamic.ropine.com/yesh/article/computers-were-invented-to-keep-track-of-boring-things Computers were invented to keep track of boring things] |
||
* [http://www.defmacro.org/ramblings/fp.html Functional programming for the rest of us] |
* [http://www.defmacro.org/ramblings/fp.html Functional programming for the rest of us] |
||
− | * [http://www.gaetanocaruana.com/2006/10/02/what-is-so-cool-about-functional-programming/ What is so cool about Functional Programming?] |
||
* [http://azaidi.blogspot.com/2007/04/zen-and-art-of-functional-programming.html Zen and the Art of Functional Programming] |
* [http://azaidi.blogspot.com/2007/04/zen-and-art-of-functional-programming.html Zen and the Art of Functional Programming] |
||
* [http://totherme.livejournal.com/3845.html Thinking in types] |
* [http://totherme.livejournal.com/3845.html Thinking in types] |
||
Line 149: | Line 146: | ||
* [http://alangloria.blogspot.com/2006/11/okay.html Diff in Haskell] |
* [http://alangloria.blogspot.com/2006/11/okay.html Diff in Haskell] |
||
* [http://blog.moertel.com/articles/2006/10/31/introductory-haskell-solving-the-sorting-it-out-kata Introductory Haskell: Solving the Sorting-It-Out Kata] |
* [http://blog.moertel.com/articles/2006/10/31/introductory-haskell-solving-the-sorting-it-out-kata Introductory Haskell: Solving the Sorting-It-Out Kata] |
||
− | * [http://gimbo.org.uk/archives/2006/12/#001887 Fibonacci series one-liner in Haskell] |
||
* [http://jcreigh.blogspot.com/2006/11/simple-rpn-calculator-in-haskell.html A Simple RPN Calculator in Haskell] |
* [http://jcreigh.blogspot.com/2006/11/simple-rpn-calculator-in-haskell.html A Simple RPN Calculator in Haskell] |
||
* [http://kenta.blogspot.com/2006/11/eratosthenes-sieve.html Eratosthenes sieve] |
* [http://kenta.blogspot.com/2006/11/eratosthenes-sieve.html Eratosthenes sieve] |
||
Line 215: | Line 211: | ||
* [http://programming.reddit.com/goto?id=jgbf Simple Unix Tools in Elegant Haskell] |
* [http://programming.reddit.com/goto?id=jgbf Simple Unix Tools in Elegant Haskell] |
||
− | * [http://blog.kfish.org/software/haskell/intro-haskell-unix.html Introductory Haskell Programming in the UNIX Environment] |
||
* [http://changelog.complete.org/posts/587-guid.html HSH: a Haskell scripting environment] |
* [http://changelog.complete.org/posts/587-guid.html HSH: a Haskell scripting environment] |
||
* [http://porg.es/blog/functional-programming-apl-and-unix-pipes Function composition and unix pipes] |
* [http://porg.es/blog/functional-programming-apl-and-unix-pipes Function composition and unix pipes] |
||
Line 275: | Line 270: | ||
* [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://sami.samhuri.net/articles/2007/05/03/a-scheme-parser-in-haskell-part-1 Parsing Scheme in Haskell] |
||
=== Monads === |
=== Monads === |
||
Line 324: | Line 318: | ||
* [http://sigfpe.blogspot.com/2007/02/comonads-and-reading-from-future.html Comonads and reading from the future] |
* [http://sigfpe.blogspot.com/2007/02/comonads-and-reading-from-future.html Comonads and reading from the future] |
||
* [http://sigfpe.blogspot.com/2006/12/evaluating-cellular-automata-is.html Evaluating cellular automata is co-monadic] |
* [http://sigfpe.blogspot.com/2006/12/evaluating-cellular-automata-is.html Evaluating cellular automata is co-monadic] |
||
− | * [http://meryrus.blogspot.com/2007/04/reading-and-coreading.html Reading and co-reading] |
||
* [http://gelisam.blogspot.com/2007/04/i-understand-comonads.html Understanding comonads] |
* [http://gelisam.blogspot.com/2007/04/i-understand-comonads.html Understanding comonads] |
||
Line 366: | Line 359: | ||
* [http://mikeburrell.wordpress.com/2007/02/01/functional-idempotence-optimization/ Folds and functional programming] |
* [http://mikeburrell.wordpress.com/2007/02/01/functional-idempotence-optimization/ Folds and functional programming] |
||
* [http://cale.yi.org/index.php/Fold_Diagrams Fold diagrams] |
* [http://cale.yi.org/index.php/Fold_Diagrams Fold diagrams] |
||
− | * [http://monad.carnalreason.org/wordpress/?p=19 foldr, foldl] |
||
====Dynamic programming==== |
====Dynamic programming==== |
||
Line 477: | Line 469: | ||
* [http://cgi.cse.unsw.edu.au/~dons/blog/2007/05/01#xmonad_part1_model QuickChecking a window manager] |
* [http://cgi.cse.unsw.edu.au/~dons/blog/2007/05/01#xmonad_part1_model QuickChecking a window manager] |
||
* [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://chiralos.blogspot.com/2006/11/testing-testing.html Testing ... testing] |
||
* [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] |
||
Revision as of 04:41, 8 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
- 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
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
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
TCP
- Simple STM TCP server
- Haskell's 'interact' with TCP sockets
- Port Scanner in Haskell
- Simple socket programming:
- On haskell: writing a packet sniffer
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
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
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
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
Strings
Algorithms and techniques
Folds
Dynamic programming
Mutable data
Sections and Currying
GUIs
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
Testing
- Introduction to QuickCheck
- QuickChecking a window manager
- On Unit Testing and Type Safety
- Robustness and QuickCheck
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