yazz.com
yazz.com

Reputation: 58786

How to create a string list in Clojure?

I want to create a string list in Clojure equivalent to the following Java code:

List<String> cities = Arrays.asList(new String[] {"Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris","Stockholm" });

: but I am unsure about the exact syntax

Upvotes: 9

Views: 9277

Answers (5)

Alex Baranosky
Alex Baranosky

Reputation: 50064

None of these are actually equivalent to:

List<String> cities = Arrays.asList(new String[] {"Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris","Stockholm" });

This is much closer to an answer to what was actually asked:

user=> (java.util.ArrayList. [1 2 3])
#<ArrayList [1, 2, 3]>
user=> (.get (java.util.ArrayList. [1 2 3]) 0)
1

Upvotes: 4

Matt Ball
Matt Ball

Reputation: 359826

(def cities ["Berlin" "Brussels" "Helsinki" "Madrid" "Oslo" "Paris" "Stockholm"])

http://en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips#Clojure_for_Java_Programmers

Upvotes: 8

Arthur Ulfeldt
Arthur Ulfeldt

Reputation: 91554

in general you can use the name of a collection you want to create as the function to create it (easy to remember eh?):

(vector     "Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris","Stockholm")
(hash-map   "Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris")
(sorted-map "Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris")
(array-map  "Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris")
(hash-set   "Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris" "Stockholm")
(sorted-set "Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris" "Stockholm")

or you can use into if you dont know in advance what type you will need to create.

(defn make-trip [trip cities]
    (into trip cities))

and pass it something like (make-trip #{"home"} ["Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris"])

Upvotes: 7

aav
aav

Reputation: 2489

Strictly speaking, examples provided above will produce vectors. List can be produced in the following way:

(list "Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris","Stockholm")

or shorter:

'("Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris","Stockholm")

In some cases this difference could be important.

Upvotes: 17

Nathan Hughes
Nathan Hughes

Reputation: 96395

How about:

(def cities ["Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris","Stockholm"])

The commas are optional.

Upvotes: 2

Related Questions