Zu den Permutationen habe ich leider noch nicht die richtige Lösung gefunden.
Für middle sollte man es vielleicht noch hin bekommen, für eine leere Liste als Eingabe eine Fehlermeldung auszugeben, aber das scheitert bei mir bis jetzt an der Typisierung.