2

this function that takes in a list of lists and returns the shortest one (returns an empty list if the list of lists is empty)

for example shortest [[1,2,9],[3,4],[1,2,3,5]] would return [3,4]

shortest :: [[a]] -> [a]

im new to haskell any help would be greatly appreciated thanks

4

4 に答える 4

10
于 2013-10-26T14:29:59.317 に答える
5

@leftaroundabout によって提示されたソリューションを拡張したいと思います。

Prelude Data.List Data.Function> minimumBy (compare `on` (map . const $ 1)) [[1..],[5..11],[3,4]]

元のソリューションとは異なり、これは間違いなく無限リストで機能します。

于 2013-10-27T10:15:49.560 に答える
0

まず、Data.Ord から比較する必要があります

import Data.Ord

次に、長さで比較する比較関数に minimumBy を指定します。

minimumBy (comparing (length)) [[1,2,9],[3,4],[1,2,3,5]]
于 2013-10-31T04:54:15.793 に答える