What type of formal notation is being used here to represent functional algorithms?
The language is pretty-printed Haskell.

In regular source code, it would look like this:



checklist :: [Int] -&gt; Array Int Bool
checklist xs = accumArray (||) False (0, n)
               (zip (filter (&lt;= n) xs) (repeat True))
               where n = length xs

countlist :: [Int] -&gt; Array Int Int
countlist xs = accumArray (+) 0 (0, n) (zip xs (repeat 1))

(as ++ bs) \\ cs = (as \\ cs) ++ (bs \\ cs) -- Not actual code
as \\ (bs ++ cs) = (as \\ bs) \\ cs
(as \\ bs) \\ cs = (as \\ cs) \\ bs