2013-02-27 2 views
0

Предположим, что функция получает в качестве входных данных две переменные разных типов (например, одна переменная является int на языке C, а одна переменная является char на языке C) и возвращает одну переменную, которая находится в Int.Вычисление лямбда-исчисления/типа haskell в некотором примере

Если эта функция закодирована как код исчисления Haskell или лямбда, каким будет тип функции?

Предположим, что функция имеет тип Int -> (Char -> Char) -> Int. Что это значит? Означает ли это, что он принимает переменную int как входную и выполняет функцию (Char -> Char) и выдает Int переменную?

+0

metoosFunction :: Int -> Char -> Int – jtobin

+0

"... и запускает функцию (ха-> полукокса) и ..." перестать думать процедурно, если вы хотите узнать Haskell. _You ** не ** «запускать» функции_, вы скорее оцениваете их результат для определенных входных данных. – leftaroundabout

ответ

6

Тип Int -> (Char -> Char) -> Int будет означать функцию принимает Int и функцию типа Char -> Char в качестве входных данных, и выводит Int.

Функция не должна на самом деле использовать ее входы как таковые. Например,

meetoosFunction :: Int -> (Char -> Char) -> Int 
meetoosFunction _ _ = 42 

*Main Data.Char> meetoosFunction 1 toUpper 
42 
Смежные вопросы