Entry tags:
Про seq
Как известно seq вычисляет свой первый аргумент до слабой заголовочной нормальной формы (WHNF). Не пользуясь GHCi, ответьте на вопрос, каково будет значение следующего выражения
Prelude> (\True y -> ()) False `seq` 5Проверьте себя в GHCi. Какова будет полученная в первом аргументе seq WHNF? UPD. А теперь вопрос на засыпку: каково будет значение следующего выражения
Prelude> (\True -> \y -> ()) False `seq` 5Считаете ли вы это правильным?
no subject
If a lambda abstraction is applied to "too few arguments", then evaluating the application just means substituting arguments for some of the lambda abstraction's variables, which always halts with the result a now unapplied lambda abstraction.
Какой именно unapplied?
(\True y -> ()) False = (\True -> \y -> ()) False или (\y -> (\True y -> ()) False y)?
Судя по запуску в GHCi второе. Как-то мутно всё.
no subject
то есть
Ну может переменная y и не переименовывается, но это уж точно неважно.
no subject
WHNF у case будет его применение, чтобы под определение попало?
Но тогда не built-in функция будет (\y -> f x y) что ли? Что такое f x вообще (частичное применение)? Это лямбда?
WTF?
no subject
GHCi> (\True -> \y -> ()) False `seq` 42
*** Exception: :21:2-18: Non-exhaustive patterns in lambda
2. Я выше писал трансляцию function binding из haskell report. Любая определенная пользователем именованная функция семантически эквивалентна (ну то есть, проще говоря, превращается при трансляции в core в)
no subject
no subject
no subject
no subject
no subject