คำถามติดแท็ก clojure

Clojure เป็นภาษา Lisp สมัยใหม่สำหรับ Java Virtual Machine (ที่มีเวอร์ชันสำหรับ CLR และ JavaScript) Clojure เป็นมากกว่าการใช้งาน Lisp ใน Java เท่านั้น Clojure ยังให้การเข้าถึงคลาสและระบบนิเวศของ Java

11
การทำแผนที่ฟังก์ชั่นกับค่าของแผนที่ใน Clojure
ฉันต้องการแปลงแผนที่หนึ่งค่าเป็นแผนที่อื่นที่มีปุ่มเหมือนกัน แต่มีฟังก์ชั่นที่ใช้กับค่าต่างๆ ฉันคิดว่ามีฟังก์ชั่นสำหรับทำสิ่งนี้ใน api clojure แต่ฉันหามันไม่เจอ นี่คือตัวอย่างการใช้งานสิ่งที่ฉันกำลังมองหา (defn map-function-on-map-vals [m f] (reduce (fn [altered-map [k v]] (assoc altered-map k (f v))) {} m)) (println (map-function-on-map-vals {:a "test" :b "testing"} #(.toUpperCase %))) {:b TESTING, :a TEST} ไม่มีใครรู้ว่าmap-function-on-map-valsมีอยู่แล้ว? ฉันคิดว่ามันทำได้ (อาจมีชื่อที่ดีกว่าด้วย)


7
มีฟังก์ชัน Zip ที่เทียบเท่าใน Clojure Core หรือ Contrib หรือไม่
ใน Clojure ฉันต้องการรวมสองรายการเพื่อให้ได้รายชื่อคู่ > (zip '(1 2 3) '(4 5 6)) ((1 4) (2 5) (3 6)) ใน Haskell หรือทับทิมฟังก์ชั่นที่เรียกว่าซิป การนำไปใช้นั้นไม่ใช่เรื่องยาก แต่ฉันต้องการให้แน่ใจว่าฉันไม่พลาดฟังก์ชันใน Core หรือ Contrib มีเนมสเปซzipใน Core แต่มีการอธิบายว่าให้การเข้าถึงเทคนิคการทำงานของซิปซึ่งดูเหมือนจะไม่ใช่สิ่งที่ฉันเป็น มีฟังก์ชันที่เทียบเท่ากันสำหรับการรวม 2 รายการขึ้นไปด้วยวิธีนี้ใน Core หรือไม่? ถ้าไม่มีนั่นเป็นเพราะมีวิธีการทางสำนวนที่ทำให้ฟังก์ชันไม่จำเป็นหรือไม่?
130 clojure 

6
เหตุใด Clojure จึงมี "คำหลัก" นอกเหนือจาก "สัญลักษณ์"
ฉันมีความรู้เกี่ยวกับ Lisps อื่น ๆ (โดยเฉพาะโครงการ) จากทางกลับ เร็ว ๆ นี้ผมได้อ่านเกี่ยวกับClojure ฉันเห็นว่ามันมีทั้ง "สัญลักษณ์" และ "คีย์เวิร์ด" สัญลักษณ์ที่ฉันคุ้นเคย แต่ไม่ใช่กับคำหลัก Lisps คนอื่นมีคีย์เวิร์ดไหม คีย์เวิร์ดแตกต่างจากสัญลักษณ์อื่นที่ไม่ใช่สัญกรณ์ต่างกันอย่างไร (เช่นโคลอน)
130 lisp  clojure  scheme  keyword 


5
วิธีสร้างค่าเริ่มต้นสำหรับอาร์กิวเมนต์ของฟังก์ชันใน Clojure
ฉันมาพร้อมกับสิ่งนี้: (defn string-> จำนวนเต็ม [str & [base]] (จำนวนเต็ม / parseInt str (ถ้า (ศูนย์? ฐาน) 10 ฐาน))) (string-> จำนวนเต็ม "10") (string-> จำนวนเต็ม "FF" 16) แต่ต้องเป็นวิธีที่ดีกว่านี้

9
Clojure: ลดเทียบกับใช้
ฉันเข้าใจความแตกต่างของแนวคิดระหว่างreduceและapply: (reduce + (list 1 2 3 4 5)) ; translates to: (+ (+ (+ (+ 1 2) 3) 4) 5) (apply + (list 1 2 3 4 5)) ; translates to: (+ 1 2 3 4 5) อย่างไรก็ตาม clojure สำนวนใดมากกว่ากัน? มันสร้างความแตกต่างไม่ทางใดก็ทางหนึ่ง? จากการทดสอบประสิทธิภาพ (แบบ จำกัด ) ของฉันดูเหมือนว่าreduceจะเร็วขึ้นเล็กน้อย
126 clojure 

4
อะไรคือความแตกต่างระหว่าง Clojure, Scheme / Racket และ Common Lisp?
ฉันรู้ว่าพวกเขาเป็นภาษาถิ่นในตระกูลเดียวกันที่เรียกว่า lisp แต่อะไรคือความแตกต่างกันแน่? คุณช่วยให้ภาพรวมครอบคลุมหัวข้อต่างๆเช่นไวยากรณ์ลักษณะคุณลักษณะและแหล่งข้อมูลหากเป็นไปได้


11
Leiningen - จะเพิ่มการอ้างอิงสำหรับไหในพื้นที่ได้อย่างไร?
ฉันต้องการใช้ leiningen เพื่อสร้างและพัฒนาโครงการ clojure ของฉัน มีวิธีแก้ไข project.clj เพื่อบอกให้เลือกไหจากไดเรกทอรีในเครื่องหรือไม่ ฉันมีกระปุกที่เป็นกรรมสิทธิ์ซึ่งไม่สามารถอัปโหลดไปยัง repos สาธารณะได้ นอกจากนี้ยังสามารถใช้ leiningen เพื่อดูแลไดเรกทอรี "lib" สำหรับโครงการ clojure ได้หรือไม่ หากโครงการ clojure ของฉันจำนวนมากใช้ขวดโหลเดียวกันฉันไม่ต้องการเก็บสำเนาแยกต่างหากสำหรับแต่ละโครงการ ขอบคุณ
117 java  build  clojure  maven  leiningen 

5
regex เพื่อจับคู่สตริงย่อยที่ไม่ได้ตามด้วยสตริงย่อยอื่น ๆ
ฉันต้องการนิพจน์ทั่วไปที่ตรงกันblahfooblahแต่ไม่ใช่blahfoobarblah ฉันต้องการให้มันจับคู่เฉพาะ foo และทุกอย่างรอบ ๆ foo ตราบเท่าที่ไม่ได้ตามด้วย bar ฉันพยายามใช้นี้foo.*(?<!bar)ซึ่งเป็นค่อนข้างใกล้เคียง blahfoobarblahแต่มันตรงกับ การมองในแง่ลบที่อยู่เบื้องหลังจะต้องจับคู่กับอะไรก็ได้ไม่ใช่แค่บาร์ ภาษาเฉพาะที่ฉันใช้คือ Clojure ซึ่งใช้ Java regexes ภายใต้ประทุน แก้ไข: โดยเฉพาะอย่างยิ่งผมยังต้องการที่จะผ่านแต่ไม่blahfooblahfoobarblahblahfoobarblahblah
116 java  regex  clojure 

5
Clojure ความแตกต่างระหว่าง Ref, Var, Agent, Atom พร้อมตัวอย่าง
ฉันใหม่มากสำหรับ Clojure พวกคุณช่วยอธิบายสถานการณ์ในโลกแห่งความจริงให้ฉันได้ไหม ฉันหมายถึงที่ที่จะใช้ Ref, Var, Agent, Atom ฉันอ่านหนังสือ แต่ยังไม่เข้าใจตัวอย่างในโลกแห่งความเป็นจริง
110 clojure  var  agent 

5
อะไรคือ“ แนวคิดที่ยิ่งใหญ่” เบื้องหลังเส้นทางการเขียนคอมโพชเชอร์
ฉันเพิ่งเริ่มใช้ Clojure และใช้ Compojure เพื่อเขียนเว็บแอปพลิเคชันพื้นฐาน defroutesแม้ว่าฉันจะชนกำแพงด้วยไวยากรณ์ของ Compojure และฉันคิดว่าฉันต้องเข้าใจทั้ง "อย่างไร" และ "ทำไม" ที่อยู่เบื้องหลังทั้งหมดนี้ ดูเหมือนว่าแอปพลิเคชัน Ring-style เริ่มต้นด้วยแผนที่คำขอ HTTP จากนั้นส่งคำขอผ่านชุดฟังก์ชันมิดเดิลแวร์จนกว่าจะเปลี่ยนเป็นแผนที่ตอบกลับซึ่งจะถูกส่งกลับไปยังเบราว์เซอร์ สไตล์นี้ดูเหมือน "ระดับต่ำ" เกินไปสำหรับนักพัฒนาดังนั้นจึงจำเป็นต้องมีเครื่องมือเช่น Compojure ฉันสามารถมองเห็นความต้องการสิ่งนี้สำหรับนามธรรมเพิ่มเติมในระบบนิเวศซอฟต์แวร์อื่น ๆ เช่นกันโดยเฉพาะอย่างยิ่งกับ WSGI ของ Python ปัญหาคือฉันไม่เข้าใจแนวทางของ Compojure ลองใช้defroutesS-expression ต่อไปนี้: (defroutes main-routes (GET "/" [] (workbench)) (POST "/save" {form-params :form-params} (str form-params)) (GET "/test" [& more] (str "<pre>" more …
109 clojure  compojure 



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.