Little nuggets in Clojure and Python
With any new language, as you proceed to use it and learn, you figure out ways to do certain things. For e.g., often times I want to know what the type a certain result or a variable is.
It’s a good thing both Clojure and Python have a REPL.
In clojure, if you wanted to find the type or class of something, you would go:
claws.core=> (map * [3 4] [1 2]) (3 8) claws.core=> (class (map * [3 4] [1 2])) clojure.lang.LazySeq claws.core=> (type (map * [3 4] [1 2])) clojure.lang.LazySeq
What if I wanted to find the functions in a namespace? From StackOverflow:
claws.core=> (keys (ns-publics 'clojure.tools.cli)) (summarize parse-opts cli)
If you wanted to find the type of a class or a variable in python, you would use python’s builtin function type thusly:
>>> import boto.ec2 as ec2 >>> conn=ec2.connect_to_region('us-east-1') >>> type(conn) <class 'boto.ec2.connection.EC2Connection'>
And if you wanted to get the modules, functions etc., of a class in python, you would use inspect:
>>> import inspect
>>> >>> inspect.getmembers(inspect, predicate=inspect.isbuiltin)
 More info about clojure namespaces is available here.
 Inspect module’s documentation is here.
- Previous: Getting it on with clojure
- Next: On Java