개발) 저는 요즘 틈틈이 clojure를 공부하고 있습니다

알림
|
X

페이지 정보

작성자 no_profile massei85 175.♡.138.140
작성일 2024.12.30 20:25
858 조회
3 추천

본문

일부러 업무에 상관없는 놈을 살펴보자 해서 Lisp 방언들 중에 찾아보다가 JVM 위에서 돌아가는 Clojure를 골라보았습니다

Lisp은 소싯적에 MIT Scheme이나 Emacs Lisp 살짝 다뤄본게 다였지만 그래도 아무튼 다같은 Lisp이라 적응하는데 도움이 되었습니다

core.async나 core.logic 같은 것도 재미지고 무엇보다 강력한 매크로 기능 탐구하느라 시간 훌쩍 가네요


다만 마이너한 언어다보니 주변에 의견 나누며 공부할 사람이 적어서 아쉽습니다

한국 클로저 사용자 모임 밋업이 종종 열리는것 같은데 그런데 나가볼 레벨은 아직 아닌거 같고

내년에 좀 기웃거려봐야겠습니다

현재는 유튜브, 특히 언어 창시자인 리치 히키 아재 영상 참조 많이 하고 있네요

댓글 13 / 1 페이지

아스파라거스님의 댓글

작성자 아스파라거스 (125.♡.122.95)
작성일 2024.12.30 20:28
클로저 재밌죠.. pipe 로 함수 합성하면 그렇게 이뻐보이더라고요 ㅋㅋ

massei85님의 댓글의 댓글

대댓글 작성자 no_profile massei85 (175.♡.138.140)
작성일 2024.12.30 20:35
@아스파라거스님에게 답글 같은 기능이더라도 최대한 멋드러지게(?) 조합하는 재미가 쏠쏠합니다 ㅋㅋ

사자바람연꽃님의 댓글

작성자 사자바람연꽃 (221.♡.34.113)
작성일 2024.12.30 20:30
사용자 적은 언어는 프래그래밍의 기본인
복사 붙여넣기가 힘듭니다.

massei85님의 댓글의 댓글

대댓글 작성자 no_profile massei85 (175.♡.138.140)
작성일 2024.12.30 20:36
@사자바람연꽃님에게 답글 이놈은 괄호 지옥 때문에 물리적으로도(?) 복붙이 힘들더군요 ㅋㅋ

트라팔가야님의 댓글

작성자 트라팔가야 (58.♡.217.6)
작성일 2024.12.30 20:36
프로그래밍이 간단히 되는 건가ㅜ보네요

(ns dijkstra-example.core
  (:require [clojure.set :as set]))

(defn dijkstra [graph start]
  (let [vertices (keys graph)
        ;; Initialize distances map, start with 0 for `start` and infinity for others
        distances (reduce (fn [dist v]
                            (assoc dist v (if (= v start) 0 Double/POSITIVE_INFINITY)))
                          {}
                          vertices)
        ;; Initialize the previous map for tracking the shortest path
        previous {}
        ;; Set of unvisited nodes
        unvisited (set vertices)]
    (loop [distances distances
          previous previous
          unvisited unvisited]
      (if (empty? unvisited)
        {:distances distances :previous previous}
        (let [;; Get the vertex with the smallest distance in the unvisited set
              current (apply min-key distances (filter unvisited (keys distances)))
              ;; Get all neighbors of the current node
              neighbors (graph current)]
          ;; Update distances for each neighbor
          (let [distances (reduce (fn [dists [neighbor weight]]
                                    (let [alt (+ (distances current) weight)]
                                      (if (< alt (distances neighbor))
                                        (assoc dists neighbor alt)
                                        dists)))
                                  distances
                                  neighbors)
                ;; Update the previous node for each neighbor
                previous (reduce (fn [prev [neighbor weight]]
                                  (let [alt (+ (distances current) weight)]
                                    (if (< alt (distances neighbor))
                                      (assoc prev neighbor current)
                                      prev)))
                                previous
                                neighbors)]
            ;; Mark the current node as visited
            (recur distances previous (disj unvisited current))))))))

;; Example graph
(def graph
  {:A [[:B 1] [:C 4]]
  :B [[:C 2] [:D 6]]
  :C [[:D 3]]
  :D []})

;; Example usage
(def result (dijkstra graph :A))
(println "Distances:" (:distances result))
(println "Previous:" (:previous result))

massei85님의 댓글의 댓글

대댓글 작성자 no_profile massei85 (175.♡.138.140)
작성일 2024.12.30 20:37
@트라팔가야님에게 답글 아 저도 입문 며칠 후에 바로 다익스트라랑 A*부터 해봤었는데 반갑네요 ㅋㅋㅋ

김재귀님의 댓글

작성자 김재귀 (123.♡.204.82)
작성일 2024.12.30 20:38
재미있고 알흠다운 괄호월드.. 스킴은 마법사책 보셨나본데 그럼 엥간한건 다 아시는구먼요
클로저리안 slack서버에 #clojure-korea 채널 오셔서 모르시는거 물어보시면 좋아하실?겁니다 ㅎㅎ

massei85님의 댓글의 댓글

대댓글 작성자 no_profile massei85 (175.♡.138.140)
작성일 2024.12.30 20:41
@김재귀님에게 답글 리습 입문자의 상당수가 sicp 때문에 입문한 경우가 많을거라 생각합니다 ㅋㅋ 그나저나 재귀가 포함된 닉에서 매우 신뢰가 가는군요 ㄷㄷ ㅋㅋ

농약벌컥벌컥님의 댓글

작성자 농약벌컥벌컥 (211.♡.184.190)
작성일 2024.12.30 20:48
생각보다 주위에 없는데 생각?보다 있습니다 ㅎㅎ

massei85님의 댓글의 댓글

대댓글 작성자 no_profile massei85 (118.♡.15.123)
작성일 2024.12.30 20:52
@농약벌컥벌컥님에게 답글 마이너 중 메이저 느낌입니다 ㅋㅋ 제 주위에서는 하스켈 파는 분이 클로저도 꽤 쓰셨더군요 어둠의 함수단 ㄷㄷ

plaintext님의 댓글

작성자 plaintext (112.♡.131.209)
작성일 2024.12.30 20:54
댓글보고 clojure 를 closure 하고 싶어지네요 ㅋㅋ
괄호천국이네요 ㅎㅎ

massei85님의 댓글의 댓글

대댓글 작성자 no_profile massei85 (118.♡.15.7)
작성일 2024.12.30 21:00
@plaintext님에게 답글 그래도 레인보우 키고 코드 분리 열심히 하면 볼만한 것 같아요 ㅎㅎ

plaintext님의 댓글의 댓글

대댓글 작성자 plaintext (112.♡.131.209)
작성일 2024.12.30 22:37
@massei85님에게 답글 하긴 그러면 은근 근사할거 같습니다 ㅎㅎㅎ
홈으로 전체메뉴 마이메뉴 새글/새댓글
전체 검색