2014-02-25 1 views
8

Я сейчас читаю Learn You a Haskell for Great Good, и я наткнулся на понятие «point-free style» на странице 85, как показано ниже. Однако функция fnполная с точками! Это меня смущает.Почему стиль без точек называется point free в Haskell, когда он заполнен точками? Откуда берется термин «точка-свободный»?

  • Почему этот стиль написания функций называется «точка-бесплатно», когда он полный с точками?

  • Как я должен понимать это понятие? «Без точек» в каком смысле?

  • Откуда взялся термин «беспутный стиль»? Возможно, из языка , где функция композиции обозначалась пространством?

PS: До сих пор это единственная запутанная часть в этой замечательной книге (т.е. в первых 85 страницах, которые я читал до сих пор).

enter image description here

+1

http://www.haskell.org/haskellwiki/Pointfree – Cynede

ответ

17

Но pointfree больше очков!

Общим заблуждением является то, что «точки» стиля pointfree являются (.) Оператор (функция состав, как символ ASCII), который использует один и тот же идентификатор, как десятичной запятой. Это не верно. Термин возник в топологии, a ветвь математики, которая работает с пространствами, состоящими из точек, и функции между этими пространствами. Таким образом, определение «0 баллов» - это функция, которая явно не указывает точки (значения) пространства, на котором действует функция. В Haskell наше «пространство» - это определенного типа, а «точки» - значения. В объявлении f x = x + 1 определяют функцию f по ее действию на произвольную точку x. Сравните это с бесплатной версией: f = (+ 1) где не упоминается значение, на которое действует функция.

от haskellwiki

7

В принципе, каждая локальная переменная является "точка". Следовательно, функция без локальных переменных «без точек».

Смежные вопросы