Обратите внимание на следующий термин Haskell:
callNTimes :: forall a . Int -> (a -> a) -> a -> a
callNTimes n f 0 = x
callNTimes n f x = f (callNTimes (n-1) f x)
firstOf :: ??????
firstOf n = callNTimes n (\ x y -> x)
Если мы игнорируем типы и нормализуем функции вручную, firstOf
- это функция, которая получает N
, затем N
аргументы, отбрасывает все, кроме первого, и возвращает его. firstOf 3 10 20 30
возвращает 3
. Можно ли ввести эту функцию в GHC 8.0 с новыми функциями зависимой типизации?
???
- я постараюсь что-нибудь придумать позже (и, вероятно, я не вижу очевидного места, где это не удастся) - person Random Dev   schedule 27.01.2016printf
. - person leftaroundabout   schedule 27.01.2016callNTimes 0 f x = x
иcallNTimes n f x = f (callNTimes (n-1) f x)
? Я слишком далек от пониманияcallNTimes
, чтобы превратить этот комментарий в предложение редактирования. - person Franky   schedule 27.01.2016