Ok, quindi ho pensato di divertirmi con le frecce. Ho provato a tradurre direttamente il quicksort sexy Haskell in un'implementazione che utilizza invece le frecce. Ma non funziona correttamente.Cosa c'è di sbagliato in questa implementazione di quicksort usando le frecce?
import Control.Arrow
qs :: Ord a => [a] -> [a]
qs = isEmpty >>> right (head &&& tail
>>> first ((qs.) . filter . (<)
&&& (\x -> (x:) . qs . filter (>=x)))
>>> first (uncurry (&&&))
>>> uncurry id
>>> uncurry (++))
>>> extract
where
isEmpty [] = Left []
isEmpty x = Right x
extract (Left x) = x
extract (Right x) = x
Qualcuno può individuare il problema?
Grande! È bene sapere su 'app'. Grazie :) – haskelline