> to me that implies that you can feed a javascript function with one
parameter two parameters instead, and it doesn't complain at all.
Yup:
$ node
Welcome to Node.js v16.14.0.
Type ".help" for more information.
> function identity(x) { return x; }
undefined
> identity(123);
123
> identity(123, "abc");
123
> identity();
undefined
>
--
Henrik
onsdag 19 januari 2022 kl. 21:50:09 UTC+1 skrev [email protected]:
> Hmm that makes sense. I'm still surprised that this works without an
> error though; to me that implies that you can feed a javascript function
> with one parameter two parameters instead, and it doesn't complain at all.
> Otherwise there must be something weird going on in the CLJS logic? If
> this is true than IMO it is a bug.
>
> On Wed, Jan 19, 2022 at 10:25 AM Lauri Pesonen <[email protected]> wrote:
>
>> Yes, you're right. I suspect it's because JS isn't strict about arity, so
>> it would be difficult / affect perf to do arity checks in CLJS.
>>
>> Cheers,
>> Lauri
>>
>> On Wed, 19 Jan 2022 at 17:32, Kovas Palunas <[email protected]> wrote:
>>
>>> 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
>>>
>>> <https://groups.google.com/d/msgid/clojurescript/CAPzck%3DcE7nd3KFq7zr3L3Trjud0Cyts%2BgK4M_cVW-YRTRhqMaA%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/CABgZr0udiw4g8pkVkvQEVcDFhwJtt7yG5hQaA6486d2SFZDJ%3DQ%40mail.gmail.com
>>
>> <https://groups.google.com/d/msgid/clojurescript/CABgZr0udiw4g8pkVkvQEVcDFhwJtt7yG5hQaA6486d2SFZDJ%3DQ%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/9a58cff5-6548-4641-be5a-dd9e2d9d97f5n%40googlegroups.com.