2010-05-22 18 views
38

मैं क्लोजर के साथ कार्यात्मक प्रोग्रामिंग सीख रहा हूं। आप क्या व्यावहारिक अभ्यास की सिफारिश कर सकते हैं? समाधान के साथ ऑनलाइन भंडार सही होगा।सीखना कार्यात्मक/क्लोजर प्रोग्रामिंग - व्यावहारिक अभ्यास?

एक विचार जिसे मैं सोच सकता हूं, सॉर्टिंग, पेड़, ग्राफ इत्यादि पर सभी लोकप्रिय एल्गोरिदम के माध्यम से जा रहा है और क्लोजर में स्वयं को लागू कर रहा हूं। हालांकि यह काम कर सकता है, यह काफी खड़ा हो सकता है और मुझे यह अक्षम करने की संभावना है (किसी ऐसे व्यक्ति की तुलना में जो जानता है कि वह क्या कर रही है)।

+0

साथ https://clojurecademy.com बहुत अच्छा संसाधन –

उत्तर

17

मैं परियोजना यूलर कर की सिफारिश करेंगे व्यायाम:

http://projecteuler.net/

परियोजना यूलर को चुनौती देने गणितीय/कंप्यूटर प्रोग्रामिंग समस्याओं की एक श्रृंखला से सिर्फ गणितीय अंतर्दृष्टि हल करने के लिए अधिक की आवश्यकता होगी । हालांकि गणित आपको सुरुचिपूर्ण और कुशल तरीकों तक पहुंचने में सहायता करेगा, कंप्यूटर और प्रोग्रामिंग कौशल का उपयोग अधिकतर समस्याओं को हल करने के लिए आवश्यक होगा।

कई प्रोग्रामर परियोजना यूलर अभ्यास को हल करते हैं, इसलिए आप अन्य (गैर कार्यात्मक) प्रोग्रामिंग भाषाओं के लिए समाधान की तुलना कर सकते, लेकिन यह भी Clojure समाधान उपलब्ध हैं:, http://clojure-euler.wikispaces.com/ ताकि आप बनाम कार्यात्मक/मुहावरेदार Clojure जरूरी विपरीत कर सकते हैं ।

बेशक आप किसी भी समाधान से परामर्श किए बिना व्यायाम स्वयं करके सबसे ज्यादा सीखेंगे।

+3

है साइट http://clojure-euler.wikispaces.com/ अब नहीं है विकी के रूप में उपलब्ध है – o0rebelious0o

12

99 Lisp Problems आज़माएं। समाधान क्लोजर में नहीं हैं, लेकिन अनुवाद करना आसान होना चाहिए।

11

मैंने हाल ही में क्लोजर सीखना शुरू किया, और labrepl उपयोगी पाया।

यह आपको मूलभूत बातें और आरईपीएल से परिचित होने देता है, इसमें कई अभ्यास शामिल हैं और कुछ गैर-स्पष्ट सामग्री का वर्णन किया गया है जो दस्तावेज़ीकरण में खोजना मुश्किल है क्योंकि आप अभी तक नहीं जानते कि आप क्या देख रहे हैं के लिये।

अनुशंसित।

संपादित

इसके अलावा Python Challenge, पहेली है कि प्रोग्रामिंग की कुछ लाइनें द्वारा हल किया जा सकता की एक श्रृंखला; एक पहेली का समाधान आपको अगली पहेली के लिए यूआरएल देता है।

हालांकि विशेष रूप से क्लोजर नहीं है, पहेलियाँ काफी मनोरंजक हैं और किसी भी नई भाषा IMHO के साथ अपने पैरों को गीला करने का एक अच्छा तरीका है। (पाइथन के लिए विशिष्ट कुछ पहेली हैं, लेकिन बहुमत नहीं हैं। forum for Python Challenge Hints फंसे हुए हैं।)

पाइथन चैलेंज यूलर कार्यों से अधिक व्यावहारिक और कम गणित उन्मुख होने में भिन्न है; कार्यों में छवि के बाइट्स को फ़िल्टर करने और प्रोग्रामेटिक रूप से हाइपरलिंक का पालन करने जैसी चीजें शामिल हैं।

6

मैं github पर clojure.contrib में कोड का अध्ययन करने की अनुशंसा करता।

एफपी सीखने के लिए एक अभ्यास के रूप में मैं क्लोजर में वर्तमान में काम कर रहे ऐप्स को लिखने की सलाह दूंगा, लेकिन किसी भी रेफ या लूप का उपयोग न करने का प्रयास करें। रिकर्सन का उपयोग करके कार्यात्मक रूप से अपनी समस्याओं को हल करने के लिए समर्पित रहें। अगर आपको लगता है कि आपको रेफरी या लूप का उपयोग करना है तो सुनिश्चित करें कि आप यह समझा सकते हैं कि ऐसा क्यों है।

8

वहाँ Clojure के लिए कुछ कार्यात्मक koans हैं: https://github.com/functional-koans/clojure-koans

मैं इन की कोशिश कर रहा करने के लिए गोल नहीं मिला है, लेकिन अच्छी समीक्षा में सुना है।

+0

यह आलेख वर्णन करता है कि क्लोजर सहित तीन भाषाओं के लिए कोनों के साथ कैसे शुरुआत करें: http://sett.ociweb.com/sett/settJan2011.html#clojure-koans –

20

4clojure हाल ही में लॉन्च किया गया था। यह कार्यात्मक कोअन्स से बहुत प्रेरणा लेता है, और 99 लिस्प समस्या से कई पहेली; लेकिन यह एक सीखने का अनुभव प्रदान करके दोनों में सुधार करता है जिसके लिए आपको केवल अपने ब्राउज़र की आवश्यकता होती है।

What is the second element of this list? जैसे भाषा ट्यूटोरियल से Is it possible to arrange these N words so that each differs from the preceding one by at most one character जैसे विचार-विमर्श करने वाले प्रश्नों में समस्याएं भिन्न होती हैं, और हर दिन अधिक समस्याएं शामिल की जा रही हैं।

7

एक बार-बार-बार-बार LISP प्रोग्रामर के रूप में, मुझे क्लोजर कोअन्स https://github.com/functional-koans/clojure-koans बेहद कुशल और विधिवत ध्वनि मिला।

तत्काल प्रतिक्रिया, दस्तावेज़ीकरण संदर्भ और फ्लाई प्रयोग पर एक तीन विंडो व्यवस्था (संपादक + मूल्यांकनकर्ता + प्रतिलिपि) का उपयोग करें।

"ट्यूटोरियल" के विषय अच्छी तरह व्यवस्थित हैं और धीरे-धीरे अधिक जटिल सामग्री पेश करते हैं। निश्चित रूप से एक अच्छा प्रारंभिक बिंदु यदि आपके पास कम से कम कुछ LISP अनुभव है।

2

http://exercism.io/ में कई गैर-तुच्छ अभ्यास नहीं हैं, वे आपको एक परीक्षण और विवरण देते हैं, आप एक समाधान प्रस्तुत करते हैं और आप अन्य लोगों के कोड को देखकर दोबारा प्रतिक्रिया देते हैं, मैं अत्यधिक अनुशंसा करता हूं, साथ ही यह बहुभुज है जिसमें आप अभ्यास कर सकते हैं वे प्रोग्रामिंग भाषा का समर्थन करते हैं।

जैसा कि अन्य ने उल्लेख किया है प्रोजेक्ट यूलर शुरू करने के लिए एक शानदार जगह है। लेकिन एक अच्छी किताब चुनें जो आपको बुनियादी सिद्धांतों और क्लोजर के कार्यान्वयन के लिए तर्क सिखाएगी, स्टुअर्ट हेलोवे द्वारा प्रोग्रामिंग क्लोजर दिमाग में आता है।

एक बार जब आप कि टिमोथी Baldridge पूरे कर चुके हैं कई वीडियो ट्यूटोरियल जहां वह साथ में चारों ओर खेलने के लिए core.async, ट्रांसड्यूसर, तर्क प्रोग्रामिंग और अन्य मज़ा सामान के बहुत सारे dissects प्रदान करता है: https://tbaldridge.pivotshare.com/

0

मैं दृढ़ता से Hackerrank सलाह देते हैं, यह कार्यात्मक प्रोग्रामिंग डोमेन है: https://www.hackerrank.com/domains/fp/intro

आप अपने कौशल की जांच कर सकते न केवल clojure, लेकिन Haskell, स्केला, erlang और कई और अधिक

संबंधित मुद्दे