Haskell Print Lines в действии - PullRequest
       2

Haskell Print Lines в действии

11 голосов
/ 04 декабря 2011

Я новичок в Haskell, и мне интересно, есть ли способ вывести «отладочные» строки внутри функции в Haskell? И.Е. Я хочу отладить, какие значения вводятся в функцию

Мой текущий код

import Prelude

foo(a,b,c) 
    print("input a : " ++ a)
    = a + b + c

main = print(foo(1, 2, 3))

У меня есть опыт программирования, но я впервые подхожу к функциональному программированию, поэтому любая помощь будет оценена.

Ответы [ 2 ]

19 голосов
/ 04 декабря 2011

Вы ищете Debug.Trace.trace.

import Debug.Trace
foo a b c = trace ("input a: " ++ show a) (a + b + c)
main = print (foo 1 2 3)

trace - это функция, которая печатает свой первый аргумент перед возвратом второго.Однако он не является ссылочно прозрачным, поэтому его следует использовать только для отладки.

Также обратите внимание, что круглые скобки не используются для применения функции в Haskell, только для группировки.

8 голосов
/ 04 декабря 2011

В дополнение к предложению @ hammar trace, вы можете использовать traceShow (также из Debug.Trace, и просто определено)

import Debug.Trace (traceShow)
foo a b c = traceShow (a, b, c) (a + b + c)
main = print (foo 1 2 3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...