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

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

7
วิธีรวมไลบรารีเนทีฟและไลบรารี JNI ไว้ใน JAR
ห้องสมุดในคำถามคือคณะรัฐมนตรีโตเกียว ฉันต้องการมีไลบรารีเนทีฟไลบรารี JNI และคลาส Java API ทั้งหมดในไฟล์ JAR เดียวเพื่อหลีกเลี่ยงปัญหาการแจกจ่ายซ้ำ ดูเหมือนจะมีความพยายามในเรื่องนี้ที่ GitHubแต่ ไม่รวมไลบรารีเนทีฟจริงเฉพาะไลบรารี JNI ดูเหมือนว่าจะเฉพาะสำหรับปลั๊กอินการพึ่งพาดั้งเดิมของLeiningen (จะไม่ทำงานเป็นแบบแจกจ่ายต่อได้) คำถามคือฉันสามารถรวมทุกอย่างไว้ใน JAR เดียวและแจกจ่ายต่อได้หรือไม่? ถ้าใช่อย่างไร PS: ใช่ฉันรู้ว่ามันอาจมีผลต่อการพกพา

1
Clojure 1.2.1 / 1.3 / 1.4 'proxy ที่สร้างใน Grails 2.0.0 runtime ล้มเหลว 1.2.0 ไม่เป็นไร
ผมทำงานเกี่ยวกับการขยายปลั๊กอิน Grails ClojureในGrails 2.0.0 (และ 2.1.0-ภาพนิ่ง) และฉันต้องการที่จะปรับปรุงมันClojure 1.3.0และเพิ่มclojure.tools.logging Clojure แสดงข้อยกเว้นระหว่างการรวบรวม พร็อกซีของฟังก์ชันล็อกสตรีมของ a ByteArrayOutputStreamin clojure.tools.logging: ClassCastException: clojure.asm.Type cannot be cast to clojure.lang.IFn ( https://gist.github.com/a6ae681c37091a3d2379 ) ฉันไปลบclojure.tools.loggingและเขียนพร็อกซีที่ถูกถอดออกของObject: (proxy [java.lang.Object] [] (toString [] "proxy's toString")) และมันก็โยนClassCastExceptionข้อความและข้อความนั้นออกไป ฉันพยายามพิมพ์macroexpand-1ของพร็อกซีและได้รับสิ่งเดียวกัน ฉันเปลี่ยนกลับเป็น Clojure 1.2.0 และพร็อกซีทำงานได้ดีอีกครั้ง ฉันลองใช้จำนวน 1.4.0 และมีพฤติกรรมเช่นเดียวกับ 1.3.0 1.2.1 ยังมีข้อยกเว้นบางอย่าง แต่ฉันพยายามตี 1.3.0 ดังนั้นฉันจึงไม่ได้ใช้เวลากับมันมากนัก สแต็คร่องรอยจุดที่ 'ฟังก์ชั่น GEN-วิธีการที่กำหนดไว้ในหนึ่งในช่วยให้รูปแบบของในgenerate-proxycore_proxy.clj …
103 grails  groovy  clojure  proxy 

12
ใครช่วยอธิบาย Clojure Transducers ให้ฉันฟังด้วยคำง่ายๆได้ไหม
ฉันได้ลองอ่านสิ่งนี้แล้วแต่ยังไม่เข้าใจคุณค่าของสิ่งเหล่านี้หรือสิ่งที่พวกเขาแทนที่ พวกเขาทำให้โค้ดของฉันสั้นลงเข้าใจง่ายขึ้นหรืออะไร? อัปเดต มีคนโพสต์คำตอบมากมาย แต่คงจะดีหากได้เห็นตัวอย่างของการมีและไม่มีตัวแปลงสัญญาณสำหรับบางสิ่งที่เรียบง่ายซึ่งแม้แต่คนงี่เง่าอย่างฉันก็สามารถเข้าใจได้ เว้นแต่แน่นอนว่าทรานสดิวเซอร์ต้องการความเข้าใจในระดับสูงซึ่งในกรณีนี้ฉันจะไม่มีวันเข้าใจพวกเขา :(

10
ในภาษาที่ใช้งานได้จริงมีอัลกอริทึมในการรับฟังก์ชันผกผันหรือไม่?
ในภาษาที่ใช้งานได้อย่างแท้จริงเช่น Haskell มีอัลกอริทึมในการรับค่าผกผันของฟังก์ชัน (แก้ไข) เมื่อเป็น bijective หรือไม่? และมีวิธีเฉพาะเจาะจงในการตั้งโปรแกรมฟังก์ชันของคุณหรือไม่?


5
Clojure มีประโยชน์อย่างไร? [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ผู้คนใช้ Clojure เพื่อใช้งานแอปพลิเคชันใดในโลกแห่งความจริง ฉันใช้ Groovy สำหรับงานกาว, Java สำหรับระบบใหญ่, สคริปต์ Python / Perl สำหรับการแยกวิเคราะห์และทากาว ฉันเห็นว่าตัวเองเรียก Clojure จาก Java แต่ฉันไม่เห็นว่าฉันจะใช้มันตรงไหนดี มันทำให้ฉันประหลาดใจว่าการใช้ภาษาสคริปต์เกือบทุกภาษาสำหรับงาน adhoc จะง่ายกว่า ฉันไม่ใช่ผู้เชี่ยวชาญเรื่อง Groovy หรือแฟนบอย แต่อย่างใด แต่มันทำให้ฉันประหลาดใจว่ามันมีกรอบการสนับสนุนที่ดีกว่าเครื่องมือและโครงสร้างภาษามากมาย (การปิดการเขียนโปรแกรมเชิงฟังก์ชัน) เช่นเดียวกันอาจกล่าวได้สำหรับ Scala เป็นไปได้ไหมว่าอนาคตของมันจะเป็นภาษาที่ฝังอยู่ในระบบอื่น ๆ ?
100 clojure 

5
Clojure: ข้อเสีย (seq) กับ conj (รายการ)
ฉันรู้ว่าconsส่งคืน seq และconjส่งคืนคอลเล็กชัน ฉันรู้ด้วยว่าconj"เพิ่ม" รายการนั้นไว้ที่ส่วนท้ายที่เหมาะสมที่สุดของคอลเลคชันและcons"เพิ่ม" รายการไว้ด้านหน้าเสมอ ตัวอย่างนี้แสดงให้เห็นทั้งสองประเด็นเหล่านี้: user=> (conj [1 2 3] 4) ; returns a collection [1 2 3 4] user=> (cons 4 [1 2 3]) ; returns a seq (4 1 2 3) สำหรับเวกเตอร์แผนที่และชุดความแตกต่างเหล่านี้มีความหมายสำหรับฉัน อย่างไรก็ตามสำหรับรายการนั้นดูเหมือนจะเหมือนกัน user=> (conj (list 3 2 1) 4) ; returns a list (4 3 …

3
Java เป็น Clojure เขียนใหม่
ฉันเพิ่งถูก บริษัท ขอให้เขียนแอปพลิเคชัน Java ขนาดใหญ่ (50,000 บรรทัดเดียว) ใหม่ (เว็บแอปที่ใช้ JSP และ servlets) ใน Clojure มีใครมีคำแนะนำเกี่ยวกับสิ่งที่ฉันควรระวังอีกบ้าง? โปรดจำไว้ว่าฉันรู้จักทั้ง Java และ Clojure ค่อนข้างดี อัปเดต ฉันเขียนใหม่และเริ่มผลิต มันค่อนข้างแปลกเพราะการรีไรท์จบลงเร็วมากจนเสร็จภายใน 6 สัปดาห์ เนื่องจากไม่จำเป็นต้องมีฟังก์ชั่นการใช้งานจำนวนมาก แต่ก็จบลงด้วย Clojure 3000 บรรทัด ฉันได้ยินว่าพวกเขามีความสุขกับระบบและมันทำในสิ่งที่พวกเขาต้องการ ข้อเสียเพียงอย่างเดียวคือผู้ชายที่ดูแลระบบต้องเรียนรู้ Clojure ตั้งแต่เริ่มต้นและเขาก็ถูกลากเข้าไปเตะและกรีดร้อง ฉันได้รับโทรศัพท์จากเขาเมื่อวันก่อนบอกว่าเขารัก Lisp ตอนนี้ .. ตลกดี :) นอกจากนี้ฉันควรพูดถึง Vaadin ให้ดี การใช้ Vaadin อาจจะช่วยประหยัดเวลาได้มากและความสั้นของโค้ดเหมือนกับที่ Clojure ทำ .. Vaadin …
97 java  clojure  vaadin 

14
แอปพลิเคชันตัวอย่าง Clojure ขนาดกลาง?
มีแอปพลิเคชันตัวอย่าง Clojure ขนาดกลางที่สามารถใช้เป็นตัวอย่าง "แนวทางปฏิบัติที่ดีที่สุด" และเป็นวิธีที่ดีในการดูว่าแอปพลิเคชันดังกล่าวมีลักษณะอย่างไรในแง่ของรหัสและการจัดระเบียบรหัส เว็บแอปพลิเคชันน่าสนใจเป็นพิเศษสำหรับฉัน แต่ที่สำคัญที่สุดคือโปรแกรมทำสิ่งที่มีประโยชน์โดยทั่วไป (เช่นบล็อกการติดตามข้อผิดพลาด CMS เป็นต้น) ไม่ใช่สิ่งทางคณิตศาสตร์ที่ฉันไม่เคยต้องนำไปใช้จริง โลก (การแก้ปัญหา N-queens, การจำลองชีวิต, สร้างลำดับ Fibonacci และค่าโดยสารตามปกติของภาษาโปรแกรมฟังก์ชัน) ขอบคุณ!

2
อะไรคือความแตกต่างระหว่าง Lisp-1 และ Lisp-2?
ฉันได้พยายามทำความเข้าใจความแตกต่างระหว่าง Lisp-1 และ Lisp-2 และสิ่งนี้เกี่ยวข้องกับ Clojure แต่ฉันยังไม่เข้าใจอย่างถูกต้อง มีใครตรัสรู้ได้ไหม
96 clojure  lisp  lisp-2 

5
วิธีการแปลงลำดับขี้เกียจเป็นไม่ขี้เกียจใน Clojure
ฉันลองทำสิ่งต่อไปนี้ใน Clojure โดยคาดหวังว่าจะมีการส่งคืนคลาสของลำดับที่ไม่ขี้เกียจ: (.getClass (doall (take 3 (repeatedly rand)))) อย่างไรก็ตามสิ่งนี้ยังคงกลับclojure.lang.LazySeqมา ฉันเดาว่าdoallจะประเมินลำดับทั้งหมด แต่ส่งคืนลำดับเดิมเนื่องจากยังมีประโยชน์สำหรับการบันทึก ดังนั้นวิธีการสร้างลำดับที่ไม่ขี้เกียจจากคนขี้เกียจคืออะไร?

4
Clojure vs Lisps คนอื่น ๆ [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดขึ้นมาใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน9 ปีที่ผ่านมา จุดประสงค์ของคำถามของฉันไม่ใช่เพื่อเริ่มสงครามเปลวไฟ แต่เป็นการตัดสินว่าในสถานการณ์ใดแต่ละภาษาคือ "เครื่องมือที่ดีที่สุดสำหรับงาน" ฉันได้อ่านหนังสือหลายเล่มเกี่ยวกับ Clojure ( Programming Clojure , Practical Clojure , The Joy of Clojureและ Manning Early Access edition of Clojure in Action ) และฉันคิดว่ามันเป็นภาษาที่ยอดเยี่ยม ฉันกำลังอ่านLet Over Lambdaซึ่งส่วนใหญ่เกี่ยวข้องกับมาโคร Lisp ทั่วไปและมันก็เป็นภาษาที่น่าสนใจมากเช่นกัน ฉันไม่ใช่ผู้เชี่ยวชาญด้าน Lisp (เป็นมือใหม่มากกว่า) แต่ภาษาตระกูลนี้ทำให้ฉันหลงใหลเช่นเดียวกับการเขียนโปรแกรมเชิงฟังก์ชันโดยทั่วไป ข้อดีของ Clojure (และข้อเสียของ "อื่น ๆ "): ทำงานบน …

6
ใน Clojure มีวิธีง่ายๆในการแปลงระหว่างประเภทรายการหรือไม่?
ฉันมักพบว่าตัวเองใช้รายการขี้เกียจเมื่อฉันต้องการเวกเตอร์และในทางกลับกัน นอกจากนี้บางครั้งฉันก็มีเวกเตอร์ของแผนที่เมื่อฉันต้องการชุดแผนที่จริงๆ มีฟังก์ชั่นตัวช่วยที่จะช่วยฉันในการแปลงระหว่างประเภทเหล่านี้หรือไม่?
92 clojure 

8
ข้อผิดพลาดทั่วไปในการเขียนโปรแกรมสำหรับนักพัฒนา Clojure เพื่อหลีกเลี่ยง [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา นักพัฒนา Clojure เกิดข้อผิดพลาดทั่วไปอะไรบ้างและเราจะหลีกเลี่ยงได้อย่างไร ตัวอย่างเช่น; มาใหม่เพื่อ Clojure คิดว่าฟังก์ชั่นการทำงานเช่นเดียวกับcontains? java.util.Collection#containsอย่างไรก็ตามcontains?จะทำงานในลักษณะเดียวกันเมื่อใช้กับคอลเล็กชันที่จัดทำดัชนีเช่นแผนที่และชุดและคุณกำลังมองหาคีย์ที่ระบุ: (contains? {:a 1 :b 2} :b) ;=> true (contains? {:a 1 :b 2} 2) ;=> false (contains? #{:a 1 :b 2} :b) ;=> true เมื่อใช้กับคอลเลกชันที่จัดทำดัชนีเป็นตัวเลข (เวกเตอร์อาร์เรย์) contains? จะตรวจสอบเฉพาะว่าองค์ประกอบที่ระบุอยู่ในช่วงดัชนีที่ถูกต้อง (อิงศูนย์): (contains? [1 2 3 4] …
92 clojure 

1
การแบ่งเนมสเปซ Clojure บนไฟล์หลายไฟล์
เป็นไปได้ไหมที่จะแบ่งเนมสเปซ Clojure บนไฟล์ต้นฉบับหลายไฟล์เมื่อทำการคอมไพล์ล่วงหน้าด้วย:gen-class? ทำอย่างไร(:main true)และ(defn- ...)เข้ามามีบทบาทอย่างไร?

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