226
|
1
|
;;; obj/temperature.lisp --- Temperature objects and conversions |
|
2
|
|
|
3
|
;; In most cases you're better off using the direct conversion |
|
4
|
;; functions on literal numbers, but defining structs is good for |
|
5
|
;; printing and other utility methods. |
|
6
|
|
|
7
|
;;; Code: |
224
|
8
|
(in-package :obj/temperature) |
226
|
9
|
|
|
10
|
(defvar *default-temperature-unit* :fahrenheit) |
|
11
|
|
|
12
|
(deftype temperature-unit-designator () '(member :fahrenheit :celsius :kelvin :rankine)) |
|
13
|
|
|
14
|
(defstruct temperature |
|
15
|
(degrees 0 :type single-float) |
|
16
|
(scale *default-temperature-unit* :type temperature-unit-designator)) |