Scheme
STk> 7
7
Inserir 7 me devolve 7, pois o valor de 7 é 7.
STk> (+ 5 9)
14
Nesse exemplo, estamos a perguntar ao programa qual o valor da soma entre 5 e 9, que me devolve, portanto, 14. Porém, o que exatamente acabamos de fazer?
Sabemos que existem várias formas de se representar uma expressão matemática. Em Scheme, contudo, o seguinte formato é utilizado:
(função argumento argumento)
dentro de parênteses.
Em scheme, parênteses são de suma importância.
Inserir um símbolo ou número entre parênteses em Scheme significa "chame a função representada por tal símbolo". Inserir um símbolo ou nome correspondente a uma função fora de parênteses significa "me diga o valor de tal simbolo", que seria algo totalmente diferente. Por exemplo:
STk> (/)
*** Error:
/: no argumenent given
Inserir o símbolo de divisão dessa forma resulta em um erro, pois estou a chamar uma função de divisão que espera dois parâmetros. No caso, não mandei nenhum.
STk> /
#[subr /]
Inserir o símbolo de divisão dessa forma não resulta em um erro, pois não chamei a função representada pelo símbolo, e sim perguntei o valor daquele símbolo.
Funções em Scheme podem ser representadas tanto por símbolos (+, -, *) como palavras (sqrt). Exemplos:
STk> (+ 4 4)
8
STk> (* 2 2)
4
STk> (/ 4 2)
2
STk> (sqrt 2)
1.4142135623731
STk>
Podemos também criar funções personalizadas ou associar valores a palavras especificas.
STk> (define pi 3.1415)
Associa a palavra pi a um numero.
Agora posso usar pi em expressões.
STk> (* pi 5 5)
78.5375
STk>
Criando funções
Em Scheme, criamos funções da seguinte forma:
(define (square x) (* x x))
Definição de uma função chamada square que recebe apenas um argumento (x). Tal função multiplica um número por ele