Haskish is a fun, no-fuss introduction to functional programming with Haskell-style syntax. No installation, no setup - just open your browser and start exploring. Can be installed as a Progressive Web App for offline use.
Perfect for students, teachers, and anyone curious about functional programming, Haskish combines ease of use with powerful features including:
Haskish covers the AQA A Level Computer Science specification (4.12) and much, much more for curious students (and teachers!).
Note: Like Haskell, strings are treated as lists of characters ([Char]), so all list functions (head, tail, map, filter, etc.) work on strings.
Created by Neil Kendall © 2025-2026
More @ www.korovatron.co.uk
Note: All list functions work on strings (treated as [Char]).
if condition then expr1 else expr2 - Conditional expression (both branches required)if x > 0 then "positive" else "non-positive"head list - First element of a listtail list - All but the first elementlength list - Length of a listnull list - Check if list is emptyreverse list - Reverse a listtake n list - Take first n elementsdrop n list - Drop first n elements: - Cons (prepend element to list): 1:[2,3] → [1,2,3]++ - Concatenate lists: [1,2]++[3,4] → [1,2,3,4]!! - Index into list: [10,20,30]!!1 → 20[expr | x <- list] - Map over list[x*2 | x <- [1,2,3]] → [2,4,6][expr | x <- list, guard] - Filter with guard[x | x <- [1..10], x > 5] → [6,7,8,9,10][expr | x <- list1, y <- list2] - Nested generators[(x,y) | x <- [1,2], y <- ['a','b']] → [(1,'a'),(1,'b'),(2,'a'),(2,'b')]map fn list - Apply function to each elementmap (*2) [1,2,3] → [2,4,6]filter predicate list - Filter list by predicatefilter (>5) [3,7,2,9] → [7,9]fold fn acc list - Reduce list with accumulatorfold (+) 0 [1,2,3] → 6(+1) - Partial application: map (+1) [1,2,3] → [2,3,4](<10) - Comparison: filter (<10) [5,15,3] → [5,3](*) - Binary operator as function: fold (*) 1 [2,3,4] → 24a ^ b - Exponentiation: 2^10 → 1024mod a b - Modulo (remainder)div a b - Integer divisionmin a b - Minimum of two valuesmax a b - Maximum of two valuesord char - Convert character to Unicode code pointchr code - Convert Unicode code point to characternot bool - Boolean negationerror message - Throw an errorcompose g f - Function composition (also g . f)True / False - Boolean values (capitalized)otherwise - Always true (for guards):help - Show all available REPL commands:show - Show all defined functions and variables:functions - List all user-defined functions:vars - List all user-defined variables:info functionName - Show definition(s) of a specific function