Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- haskell
- ChromeTab
- sprintf
- ranges
- Chrono
- Reflect
- design pattern
- web
- SHA512
- async
- Clojure
- stringprintf
- go
- WebView
- Observer
- program
- traits
- kotlin
- RAII
- coroutines
- Functional
- type_traits
- Scala
- AES
- template
- CustomTab
- sha256
- SHA1
- Android
- c++
Archives
- Today
- Total
프로그래밍 검색 블로그
clojure 기초 반복 loop 본문
loop 에서는 let과 비슷하게 루프 안에서만 사용할 수 있는 변수를 정의할 수 있고
recur를 호출하는것으로 가장 가까운 스코프의 loop 로 돌아갈 수 있다
recur는 인자로 들어가는 값으로 loop를 다시 실행하는데
recur에 인자로 들어가는 값의 숫자와 loop 값의 숫자가 같아야 한다
1 2 3 4 5 6 | (defn foo [] (loop [i 0] (println i) (if (< i 5) (recur (inc i))))) | cs |
구조는 별로 좋지 않은것 같지만 이해를 돕기 위해서 첨부하였다
i가 5보다 작으면 반복하게 된다
최대한 구조가 비슷하게 C++로 만든 함수는 다음과 같다
1 2 3 4 5 6 7 8 9 10 | void foo(){ int i = 0; LOOP: printf("%d\n", i); if(i < 5){ i++; goto LOOP; } } | cs |
반복 구조는 x86어셈블리의 loop와도 비슷하다
'clojure기초' 카테고리의 다른 글
clojure 함수형 패턴매칭 1 (cond) (0) | 2017.10.21 |
---|---|
clojure factorial 1 (0) | 2017.10.21 |
clojure 변수 선언 (0) | 2017.10.21 |
clojure 함수 3 (0) | 2017.10.21 |
clojure 함수 2 (0) | 2017.10.21 |
Comments