[ << Tutorial de l’Scheme ] | [Top][Contents][Index] | [ Interfícies per a programadors >> ] |
[ < Taules de hash ] | [ Up: Introducció a l’Scheme ] | [ Procediments de l’Scheme > ] |
A.1.5 Càlculs a l’Scheme
L’Scheme es pot usar per fer càlculs. Utilitza sintaxi
prefixa. Sumar 1 i 2 s’escriu com (+ 1 2)
i
no com el tradicional 1+2.
guile> (+ 1 2) 3
Els càlculs es poden niuar; el resultat d’una funció es pot usar per a un altre càlcul.
guile> (+ 1 (* 3 4)) 13
Aquests càlculs són exemple d’avaluacions; una expressió com
(* 3 4)
es substitueix pel seu valor 12
.
Els càlculs de l’Scheme són sensibles a les diferències entre enters i no enters. Els càlculs enters són exactes, mentre que els no enters es calculen amb els límits de precisió adequats:
guile> (/ 7 3) 7/3 guile> (/ 7.0 3.0) 2.33333333333333
Quan l’intèrpret de l’Scheme troba una expressió que és una llista, el primer element de la llista es tracta com un procediment a avaluar amb els arguments de la resta de la llista. Per tant, tots els operadors a l’Scheme són operadors prefixos.
Si el primer element d’una expressió de l’Scheme que és una llista que es passa a l’intèrpret no és un operador o un procediment, es produeix un error:
guile> (1 2 3) Backtrace: In current input: 52: 0* [1 2 3] <unnamed port>:52:1: In expression (1 2 3): <unnamed port>:52:1: Wrong type to apply: 1 ABORT: (misc-error) guile>
Aquí podem veure que l’intèrpret estava intentant tractar l’1 com un operador o procediment, i no ho va poder fer. D’aquí que l’error sigu "Wrong type to apply: 1".
Així doncs, per crear una llista hem d’usar l’operador de llista, o podem precedir-la d’un apòstrof perquè l’intèrpret no intenti avaluar-la.
guile> (list 1 2 3) (1 2 3) guile> '(1 2 3) (1 2 3) guile>
Això és un error que pot aparèixer quan treballeu amb l’Scheme dins del LilyPond.
[ << Tutorial de l’Scheme ] | [Top][Contents][Index] | [ Interfícies per a programadors >> ] |
[ < Taules de hash ] | [ Up: Introducció a l’Scheme ] | [ Procediments de l’Scheme > ] |