В этой статье блога мы углубимся в мир программирования на Haskell и рассмотрим различные методы реализации теоремы Пифагора. Теорема Пифагора — фундаментальная концепция геометрии, которая гласит, что в прямоугольном треугольнике квадрат длины гипотенузы равен сумме квадратов двух других сторон. Мы продемонстрируем различные примеры кода, демонстрирующие реализацию теоремы с использованием различных подходов в Haskell.
Метод 1: основная формула
Самый простой способ реализовать теорему Пифагора — использовать базовую формулу. В Haskell мы можем определить простую функцию для вычисления длины гипотенузы:
pythagoras :: Double -> Double -> Double
pythagoras a b = sqrt (a * a + b * b)
В этом методе мы берем длины двух сторон, aи b, и вычисляем квадратный корень из суммы их квадратов. Результатом будет длина гипотенузы.
Метод 2: сопоставление с образцом
Функция сопоставления с образцом в Haskell позволяет нам определить теорему Пифагора, используя сопоставление с образцом для кортежей:
pythagoras :: (Double, Double) -> Double
pythagoras (a, b) = sqrt (a * a + b * b)
При таком подходе мы передаем кортеж, содержащий длины сторон (a, b), в качестве аргумента функции, а сопоставление с образцом извлекает отдельные значения для вычислений.
Метод 3: стиль без точек
В Haskell стиль без точек относится к написанию функций без явного упоминания их аргументов. Мы можем реализовать теорему Пифагора, используя бесточечный стиль, используя композицию функций и каррирование:
pythagoras :: Floating a => a -> a -> a
pythagoras = sqrt . ((^2) .) . (+) . (^2)
Здесь мы составляем функции для выполнения необходимых вычислений. Функция (^2)возводит значение в квадрат, (+)складывает два значения, а sqrtвычисляет квадратный корень.
Метод 4: аппликативный стиль
Аппликативный стиль Haskell позволяет нам применять функции к аргументам лаконично и элегантно. Мы можем реализовать теорему Пифагора, используя функцию liftA2из модуля Control.Applicative:
import Control.Applicative
pythagoras :: Double -> Double -> Double
pythagoras a b = sqrt <$> (a * a + b * b)
При таком подходе мы используем оператор <$>, чтобы применить функцию sqrtк сумме квадратов a * a + b * b. Результатом будет длина гипотенузы.
В этой статье мы исследовали несколько методов реализации теоремы Пифагора в Haskell. Мы рассмотрели базовую формулу, сопоставление с образцом, бесточечный стиль и аппликативный стиль. Каждый метод предлагает уникальный способ выражения концепции, демонстрируя гибкость и выразительность Haskell как функционального языка программирования. Понимая и реализуя теорему Пифагора различными способами, мы углубляем понимание как программирования на Haskell, так и геометрии.