That's not true in cljs; the maps are just output unsorted without errors.

On Wed, Jan 19, 2022, 9:01 AM Lauri Pesonen <[email protected]> wrote:

> Kovas,
>
> I'm just an end-user like yourself so I can't say anything about adding a
> bug for this. But I don't really see what the language / core library could
> do differently: the exception already says "wrong number of args (2)
> passed".
>
> Cheers,
> Lauri
>
> On Wed, 19 Jan 2022 at 16:35, Kovas Palunas <[email protected]>
> wrote:
>
>> Ohhhh, I was under the impression that the function was a key function
>> returning a value that would be sorted on place of the real value.
>> sorted-map-by(-key) is how I read it.
>>
>> Any chance we could make a bug to add this exception?  It would have
>> saved me a lot of time.
>>
>> On Wed, Jan 19, 2022, 8:27 AM Lauri Pesonen <[email protected]> wrote:
>>
>>> Hi Kovas,
>>>
>>> When I run your code in a Clojure repl (as opposed to CLJS), I get an
>>> exception:
>>>
>>> clojure.lang.ArityException: Wrong number of args (2) passed to:
>>> app.core-test/sort-map/fn--24334
>>>
>>> And this is because you're the comparator that you pass to sorted-map-by
>>> is a 1-arity function: #(if (= % :input) "aaaaa" (name %)))
>>>
>>> The comparator will be called with two map entries as arguments so that
>>> the comparator can decide which one of them should be first, so your
>>> comparator function should do something with %1 and %2. But I can't really
>>> tell from the code what you're trying to do, so I'm not sure what the
>>> comparator should look like.
>>>
>>> Cheers,
>>> Lauri
>>>
>>> On Tue, 18 Jan 2022 at 14:15, Kovas Palunas <[email protected]>
>>> wrote:
>>>
>>>> Hey all,
>>>>
>>>> I think I've found a bug in `sorted-map-by`, as shown by the below code:
>>>>
>>>> ```
>>>> (ns app.core-test
>>>>   (:require
>>>>    [cljs.test :refer (deftest is)]
>>>>    [clojure.string :as st]))
>>>>
>>>> (prn *clojurescript-version*)  ;; "1.10.914"
>>>>
>>>> (defn single-row [result-row]
>>>>   {:input (:input result-row)
>>>>    (keyword (st/join [(name (:biomarker result-row)) "-datapoints"]))
>>>> (:datapoints result-row)})
>>>>
>>>> (defn sort-map [m]
>>>>   ; Sort row so that :input is first, then put this rest in
>>>> alphabetical order
>>>>   (into (sorted-map-by #(if (= % :input) "aaaaa" (name %))) m))
>>>>
>>>> (defn get-per-input-row [same-input-results]
>>>>   ; Calling sort-map twice here resolves the problem.
>>>>   (sort-map (reduce merge (map single-row same-input-results))))
>>>>
>>>> (defn make-per-input-results
>>>>   [results]
>>>>   (let [rows-by-input (group-by :input results)]
>>>>     (map get-per-input-row (vals rows-by-input))))
>>>>
>>>> (deftest test-bad-map-sorting
>>>>   (is (= '({:input 1 :a-datapoints 5}
>>>>            {:input 2 :a-datapoints 5}
>>>>            {:input 3 :b-datapoints 5}
>>>>            {:input 4 :b-datapoints 5})
>>>>          (make-per-input-results
>>>>           [{:input 1 :biomarker :a :datapoints 5}
>>>>            {:input 2 :biomarker :a :datapoints 5}
>>>>            {:input 3 :biomarker :b :datapoints 5}
>>>>            {:input 4 :biomarker :b :datapoints 5}]))))
>>>> ```
>>>>
>>>> The testcase fails, when I would expect it to succeed.  I tried posting
>>>> this on the cljs JIRA as a bug, but I don't have permission, so I thought
>>>> I'd post it here instead.  Anyone want to try reproducing this and posting
>>>> on the JIRA if you can reproduce it?
>>>>
>>>>  - Kovas
>>>>
>>>> --
>>>> Note that posts from new members are moderated - please be patient with
>>>> your first post.
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "ClojureScript" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/clojurescript/7eedfcb0-acff-496c-b332-11589f7e9582n%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/clojurescript/7eedfcb0-acff-496c-b332-11589f7e9582n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> --
>>> Note that posts from new members are moderated - please be patient with
>>> your first post.
>>> ---
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "ClojureScript" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/clojurescript/0-SJ0zmVX6c/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> [email protected].
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/clojurescript/CABgZr0s7iwQe8r%3DWXSDpx42bh7B_T8CURo61U7gonokrw9OJQw%40mail.gmail.com
>>> <https://groups.google.com/d/msgid/clojurescript/CABgZr0s7iwQe8r%3DWXSDpx42bh7B_T8CURo61U7gonokrw9OJQw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "ClojureScript" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/clojurescript/CAPzck%3DdBhpRrkTT65myd4vh8_X4jkoKXWeoXMt%3DKq4hMdPg0oQ%40mail.gmail.com
>> <https://groups.google.com/d/msgid/clojurescript/CAPzck%3DdBhpRrkTT65myd4vh8_X4jkoKXWeoXMt%3DKq4hMdPg0oQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
> --
> Note that posts from new members are moderated - please be patient with
> your first post.
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "ClojureScript" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/clojurescript/0-SJ0zmVX6c/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/clojurescript/CABgZr0v1dRNfOKnndPSfGGM%2Bs6kcz509_HO%2B8eiU9yqfYbCL4A%40mail.gmail.com
> <https://groups.google.com/d/msgid/clojurescript/CABgZr0v1dRNfOKnndPSfGGM%2Bs6kcz509_HO%2B8eiU9yqfYbCL4A%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojurescript/CAPzck%3DcE7nd3KFq7zr3L3Trjud0Cyts%2BgK4M_cVW-YRTRhqMaA%40mail.gmail.com.

Reply via email to