uczę Clojure i widziałem ten kawałek kodu Online:Clojure Podstawy: liczenie częstotliwości
(count (filter #{42} coll))
i robi, jak stwierdzono, liczba wystąpień liczby 42 w Coll. Czy #{42}
jest funkcją? Dokumentacja Clojure na filtrze mówi, że tak powinno być, ponieważ opis działa tak, jak jest reklamowany. Po prostu nie mam pojęcia, jak to działa. Gdyby ktoś mógł to dla mnie wyjaśnić, byłoby wspaniale. Moje własne rozwiązanie tego samego byłby:
(count (filter #(= %1 42) coll))
Dlaczego mój funkcji filtrowania ma nawiasu i fragment znalazłem online ma nawiasów klamrowych wokół funkcji filtrowania (#(...)
vs. #{...}
)?
Czy widziałaś tę odpowiedź? http://stackoverflow.com/questions/3249334/test-whether-a-list-contains-a-specific-value-in-clojure – Jonas
Nie, nie widziałem tej odpowiedzi. Widzę, że używają podobnych fragmentów kodu. Wspomina się również, że '(# {x} x)' zwraca 'x'. Po prostu nie rozumiem, co robi funkcja # # xx} jako funkcja. Czy to nie tylko zestaw? – vim
Zobacz moją odpowiedź. Zestaw to nie tylko zestaw - między innymi to IFn, więc możesz traktować go jako funkcję. – pete23