I'm learning clojure and have a very basic question: given that clojure has type inference, how can you tell what class was inferred?
For instance, these would each result in different data types:
(2) (/ 2 3) (/ 2.0 3)
Is there some kind of class
function that will return the data type? Also, is there a normal way of casting something to be a specific type? So in the second example above, what would I do if I wanted the result to be float?
Clojure allows you to create records, which are custom, maplike data types. They're maplike in that they associate keys with values, you can look up their values the same way you can with maps, and they're immutable like maps.
Clojure is written in terms of abstractions. There are abstractions for sequences, collections, callability, etc. In addition, Clojure supplies many implementations of these abstractions. The abstractions are specified by host interfaces, and the implementations by host classes.
List is a structure used to store a collection of data items. In Clojure, the List implements the ISeq interface. Lists are created in Clojure by using the list function.
Clojure collections "collect" values into compound values. There are four key Clojure collection types: vectors, lists, sets, and maps.
There is a type
function in the clojure.core
library.
user> (type 2) java.lang.Integer user> (type (/ 2 3)) clojure.lang.Ratio user> (type (/ 2.0 3)) java.lang.Double
If you want to convert a given number into a float then use float
.
user> (float 10) 10.0
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With