Size: a a a

2021 March 06

к

кана in Haskell Start
id :: a -> a
id x = x
источник

Д

Дон Макароне🦜... in Haskell Start
Махо
id что то значит?
возвращает свой аргумент
источник

к

кана in Haskell Start
foldr (.) id (replicate 10 (* 2)) 1

тут же мы создаем список из 10 одинаковых функций, а потом сворачиваем список композицией (и id как начальное значение)
источник

М

Махо in Haskell Start
кана
foldr (.) id (replicate 10 (* 2)) 1

тут же мы создаем список из 10 одинаковых функций, а потом сворачиваем список композицией (и id как начальное значение)
Ах*еть
источник

Д

Дон Макароне🦜... in Haskell Start
напугал новичка)))
источник

М

Махо in Haskell Start
После питонов и плюсов все это очень необычно
источник

к

кана in Haskell Start
на самом деле довольно удивительно, что такой функции нет в base, а какой-нибудь iterate есть
источник

М

Махо in Haskell Start
кана
можно вот так расписать еще

ap :: Int -> (a -> a) -> (a -> a)
ap 0 f x = x
ap n f x = f (ap (n - 1) f x)
А ничего что ap два раза ?
То есть одинаковые названия
источник

к

кана in Haskell Start
а, можно еще через iterate

iterate :: (a -> a) -> a -> [a]

она принимает функцию и аргумент, и создает бесконечный список из всех применений последовательных

iterate (* 2) 1 == [1, 2, 4, 8, ...]

ap n f x = (iterate f x) !! x
источник

к

кана in Haskell Start
Махо
А ничего что ap два раза ?
То есть одинаковые названия
нет, это одна и та же функция, просто разные случаи
источник

к

кана in Haskell Start
сначала попытается сматчится первый случай, и если выйдет (если n = 0), то он выполнится, иначе пойдет на второй случай
источник

к

кана in Haskell Start
это то же самое как написать

ap :: Int -> (a -> a) -> (a -> a)
ap n f x = case n of
 0 -> x
 n -> f (ap (n - 1) f x)
источник

М

Махо in Haskell Start
кана
это то же самое как написать

ap :: Int -> (a -> a) -> (a -> a)
ap n f x = case n of
 0 -> x
 n -> f (ap (n - 1) f x)
Ого
источник

М

Махо in Haskell Start
так понятнее
источник

М

Махо in Haskell Start
Представляю сколько строк это было бы на плюсах-питонах
источник

к

кана in Haskell Start
def ap(n, f, x):
 if n == 0:
   return x
 else:
   return f(ap(n - 1, f, x))

ap(10, lambda x: x * 2, 1)

и на плюсах

#include <iostream>
#include <functional>

template<class T>
T ap(int n, std::function<T(T)> f, T x) {
   if (n == 0) {
       return x;
   } else {
       return ap(n-1, f, f(x));
   }
}

int main() {
 std::cout << ap<int>(10, [=](int x) { return x*2; }, 1);
}
источник

М

Махо in Haskell Start
а почему print печаетает с ковычками?
print "Hello World"
Так и должно быть или у меня проблемы?
источник

Д

Дон Макароне🦜... in Haskell Start
Махо
а почему print печаетает с ковычками?
print "Hello World"
Так и должно быть или у меня проблемы?
putStrLn не печатает кавычки
источник

Д

Дон Макароне🦜... in Haskell Start
print = putStrLn . show
источник

Д

Дон Макароне🦜... in Haskell Start
show для строки показывает ее с кавычками
источник