EXERCISE: Temperature conversion with cond
Write a function which converts temperatures into degrees Celsius.
The function should take degrees
and scale
as arguments, where scale is either fahrenheit or kelvin temperature scales. If the celsius scale is used, then return the same value
For example:
(temperature-in-celsius 32.0 :fahrenheit) ;=> 0.0
(temperature-in-celsius 300 :kelvin) ;=> 26.85
(temperature-in-celsius 22.5 :celsius) ;=> 22.5
(temperature-in-celsius 22.5 :fake) ;=> "Unknown scale: :fake"
If an unknown temperature scale is used, an error message should be returned
(defn temperature-in-celsius [temperature scale]
(cond
;; ...
))
;;
;; Dont forget to call your function
()
Formulas to convert temperatures
- Fahrenheit to Celsius:
(* (- Fahrenheit 32) 5/9)
= Celsius - Kelvin to Celsius:
(- Kelvin 273.15)
= Celsius
Our function takes two arguments, the temperature in degrees celsius
(defn temperature-in-celsius [temperature scale]
(cond
(= scale :celsius) temperature
(= scale :fahrenheit) (* (- temperature 32) 5/9)
(= scale :kelvin) (- temperature 273.15)
:else (str "Unknown scale: " scale)))
(temperature-in-celsius 32.0 :fahrenheit) ;=> 0.0
(temperature-in-celsius 300 :kelvin) ;=> 26.85
(temperature-in-celsius 22.5 :celsius) ;=> 22.5
(temperature-in-celsius 22.5 :gibberish) ;=> "Unknown scale: :gibberish"