Cadenas y números en Lisp
Unir cadenas y dividir números, donde Lisp conserva respuestas exactas por defecto.
;; concatenate wants its result type spelled out before the pieces
(defparameter *artist* "brian eno")
(defparameter *track* "an ending")
(defun title-line (artist track)
(concatenate 'string
(string-upcase artist)
" - "
(string-capitalize track)))
;; / keeps an exact ratio, floor truncates, float widens to a decimal
(defparameter *seconds* 262)
(format t "~a~%" (title-line *artist* *track*))
(format t "exact minutes: ~a~%" (/ *seconds* 60))
(format t "whole minutes: ~a with ~a left over~%"
(floor *seconds* 60) (mod *seconds* 60))
(format t "rounded off: ~,2f~%" (float (/ *seconds* 60)))
Cómo funciona
title-linepega cuatro piezas conconcatenate, que necesita el tipo de resultado'stringpor delante.(string-upcase artist)y(string-capitalize track)recapitalizan sin tocar los originales.(/ *seconds* 60)devuelve la razón exacta, mientrasfloorymodla parten yfloatda un decimal.
Palabras clave y builtins usados aquí
concatenatedefparameterdefunfloatfloorformatmod
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 597
- Tokens
- 86
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 69 segundos.
Paso 3 de 3 en Valores y vinculaciones; paso 3 de 27 en Fundamentos del lenguaje.