Описание тега weak-head-normal-form
2
ответа
Как Haskell оценивает эту функцию простых чисел?
Мне довольно сложно понять, как Хаскелл оценит это primes функция. Это primes Функция оценивается снова и снова, или primes в primeFactors функция укажет на первый primes? primes = 2 : filter ((==1) . length . primeFactors) [3,5..] primeFactors n = …
06 дек '18 в 03:39
1
ответ
Оценка выражений в Haskell: Исправление типа подвыражения приводит к тому, что родительское выражение оценивается в разной степени.
Я не могу объяснить следующее поведение: Prelude> let x = 1 + 2 Prelude> let y = (x,x) Prelude> :sprint y Prelude> y = _ Теперь, когда я указываю тип для х: Prelude> let x = 1 + 2 ::Int Prelude> let y = (x,x) Prelude> :sprint y …
03 сен '15 в 05:27
1
ответ
Смущает преобразование WHNF в NF в Haskell
В простом примере преобразование WHNF в NF с помощью печати работает нормально Prelude> let x = 1 + 2 :: Int Prelude> :sprint x x = _ Prelude> x 3 Prelude> :sprint x x = 3 Но в случае, тип не объявлен, он не работает. Prelude> let x =…
28 ноя '18 в 10:24
2
ответа
Почему встроенная функция применяется к слишком небольшому числу аргументов, которые считаются находящимися в нормальной форме со слабой головой?
Определение Хаскелла гласит: Выражение в слабой нормальной форме головы (WHNF), если оно либо: конструктор (в конечном итоге применяется к аргументам), как True, Just (квадрат 42) или (:) 1 встроенная функция применяется к слишком малому количеству …
27 июн '14 в 08:29
3
ответа
Haskell складывает плохую производительность с (++)
У меня есть этот код: import Data.List newList_bad lst = foldl' (\acc x -> acc ++ [x*2]) [] lst newList_good lst = foldl' (\acc x -> x*2 : acc) [] lst Эти функции возвращают списки с каждым элементом, умноженным на 2: *Main> newList_bad [1.…
18 фев '13 в 14:27
4
ответа
Проверьте, было ли значение оценено как слабая нормальная форма головы
В Haskell, возможно ли проверить, было ли значение оценено как слабая нормальная форма головы? Если функция уже существует, я ожидаю, что она будет иметь такую подпись evaluated :: a -> IO Bool Есть несколько мест, где живет подобный функционал…
24 фев '15 в 02:51
9
ответов
Haskell: Что такое нормальная форма слабой головы?
Что означает Нормальная Форма Слабой Головы (WHNF)? Что означает нормальная форма головы (HNF) и нормальная форма (NF)? Реальный мир Haskell утверждает: Знакомая функция seq вычисляет выражение к тому, что мы называем нормальной формой головы (сокра…
29 июл '11 в 12:13
1
ответ
Понимание различного поведения thunks, когда GHCi позволяет связывать
Я играл с некоторыми примерами из книги Саймона Марлоу о параллельном и параллельном программировании в Haskell и наткнулся на интересное поведение, которое я не совсем понимаю. Это действительно о том, что я пытаюсь понять некоторые внутренние прин…
15 июл '14 в 10:20
1
ответ
Слабая голова, нормальная форма и порядок оценки
Я много читал о слабой голове и нормальной форме. Но мне все еще трудно представить себе логику порядка оценки Хаскелла Общий пример, демонстрирующий, когда и как использовать, но я все еще не понимаю, как общий пример foldl (+) 0 [1..5000000] может…
26 апр '14 в 15:59
1
ответ
Уменьшить лямбда-выражения в WHNF
Я должен сократить следующее лямбда-выражение в WHNF, но я не совсем уверен, как это сделать: (λx y. x 3) (+ 4) (+ 6 7) Итак, как мне это сделать? Сокращение числа обращений по имени? Это выражение (другой пример) (λz x. (λx. x) z) x в WHNF еще нет?
20 июн '16 в 09:48
1
ответ
Почему Хаскелл считает лямбда-абстракции в нормальной форме слабой головы (WHNF)?
В Хаскеле лямбды считаются в WHNF, в то время как неприменяемые пользовательские функции - нет. Какова была мотивация этого различия?
31 авг '14 в 20:48
1
ответ
Нормальная форма Haskells Weak Head
Я наткнулся на некоторые раздражающие вещи. Я знаю, что haskell работает со слабой нормальной формой головы (WHNF), и я знаю, что это такое. Набираю следующий код в ghci (я использую команду: sprint, которая сокращает выражение до WHNF, насколько мн…
04 фев '20 в 14:09
3
ответа
Что на самом деле делает seq в Haskell?
Из Real World Haskell я читал Он работает следующим образом: когда выражение оценивается, оно заставляет вычислить его первый аргумент, а затем возвращает его второй аргумент. На самом деле он ничего не делает с первым аргументом: существует исключи…
04 апр '21 в 19:58
2
ответа
Пример строгой оценки из книги Саймона Марлоу «Параллельное и параллельное программирование в Haskell»
Саймон Марлоу в своей книге «Параллельное и параллельное программирование в Haskell» пишет: Операция вставки имела эту строку: putMVar m (Map.insert name number book) Это помещает в MVar неоцененное выражение Map.insert name number book. Если бы мы …
13 май '21 в 16:13