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 |
| 29 | 30 | 31 |
Tags
- Scala
- template
- ranges
- SHA1
- sha256
- async
- Functional
- Chrono
- coroutines
- stringprintf
- sprintf
- kotlin
- c++
- type_traits
- SHA512
- AES
- Android
- Reflect
- CustomTab
- design pattern
- Observer
- RAII
- web
- traits
- WebView
- go
- program
- ChromeTab
- Clojure
- haskell
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