Защищенные уравнения в Haskell

Кто-то может предоставить мне легкое для понимания объяснения защищенного уравнения, поскольку оно используется в Haskell и также его математическом смысле?

11
задан nbro 17 June 2017 в 12:19
поделиться

3 ответа

Хаскелл-охранники можно рассматривать как математическую функцию, определенную кусочком над входом.

foo x | x < 0 = bar
      | x < 5 = baz
      | x < 20 = quux
      | otherwise = quaffle

было бы написано математиком примерно так:

foo(x) = { bar, if x < 0
           baz, if x >= 0 && x < 5
           quux, if x >= 5 && x < 20
           quaffle, if x >= 20

Каждый из охранников в функции Хаскелла неявно несет отрицание всех охранников, которые ему предшествуют, потому что их пытаются один за другим.

Хаскелл предпочитает написать стража слева от знака равенства, чтобы было легче следить за потоком управления. Если вы решите прочитать | как "такой", то это станет довольно интуитивным.

10
ответ дан 3 December 2019 в 05:12
поделиться

Защищенное уравнение - это уравнение (утверждение о равенстве), который включает в себя то, что называется разграничением падежей . Пример:

fac :: Integer -> Integer
fac n | n > 0     = n * fac (n - 1)
      | otherwise = 1

Это определение факториальной функции . Математики напишут:

Latex

0! = 1 по определению.Для всех значений n больше, чем 0 , n! можно определить в терминах (n - 1)! . Это не относится к 0! . По этой причине необходимо различать два случая. И это то, что делает осторожное уравнение.

8
ответ дан 3 December 2019 в 05:12
поделиться

Защищенное уравнение - это кусочно-функциональная конструкция, эквивалентная Хаскеллу .

4
ответ дан 3 December 2019 в 05:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: