Estoy tratando de usar protocolos para crear un tipo de número de ingeniería (un "knumber"), así que puedo decir (+ "1k" "2Meg")
y obtener algo así como "2.001Meg"
. Debería poder obtener el valor del punto flotante del knumber como (:val my-knumber)
, pero normalmente la impresora debería mostrar la cadena, que también es accesible como (:string my-knumber)
. Este número soportará todos los sufijos usuales p, n, u, m, k, Meg, G, y lo convertirá según se requiera entre ellos, como (/ "1Meg" "1G") -> "1m")
. Quiero poder pasar esto a cualquier función que espera un número.Cómo extender los protocolos numéricos en Clojure
De todos modos, ¿alguien puede sugerir una estrategia para esto? Creo que necesito usar protocolos. Actualmente tengo un (defrecord knumber [val string])
pero no estoy seguro de lo que vendrá después.
¿Qué protocolos satsify números de cliché? Estoy pensando que necesito extender algunos protocolos/interfaces existentes para esto.
Gracias
Sé que no es lo mismo, pero puede usar notación científica: (/ 1e6 1e9) – DaoWen