Miranda is a functional programming language, a little to pure to be any use to me, I'd prefer a hybrid language. Still it's and interesting language, see it's Wikipedia page.

I also do not like the way it uses = in more than one way:

1) As to assign values.

2) To define functions.

3) as an relational operator to test equality.

so you can have function definitions like

mktree list = build (sort list) where

build lst = Empty, if lst = []

= Fork left (lst!m) right, otherwise


left = build (take m lst)

right = build (drop (m+1) lst)

m = #lst div 2

which shows = being used to define functions, mktree list = build .. and build lst = , and then as a equality operator lst = [], and then to assign to left, right and m, this is ugly and ambiguous.