quicksort :: (Ord a) => [a] -> [a]
quicksort [] = []
quicksort (x:xs) =
let smallerSorted = quicksort [a | a <- xs, a <= x]
biggerSorted = quicksort [a | a <- xs, a > x]
in smallerSorted ++ [x] ++ biggerSorted
ㄷㄷ
-----------------------------좀 더 좋은 버전같은 것? 추가
더 아름다운 버전 있는데 어디서 이상한거 주어왔냐. 아무튼 아름답지? 그게 하스켈의 매력이야.
근데 문법을 이해를 못하겠음 ㄸ
ㅎㄷㄷ 그냥 구글에서 주워왓는데 이것보다 간단한게 있다니 ㄸ
저기 나오는 대괄호는 list comprehension 이라 불러. 한글로는 뭐라 말해야될지 모르겠다. 수학에서 set(집합)에 대해 쓰던 기호를 그대로 언어에 도입한거야. 언어를 수학자들이 만들었으니 가능했었지
quicksort 가 여러개인 건 메소드 다형성이라 생각하면 돼. 오버로딩? 다른언어에선 뭐라 부르던거 같은데. 첫번째 :: 가 들어간건 타입이고
인자로 [] (빈리스트) 를 받으면 빈 리스트를 돌려죽고, 아닐경우엔 인자가 (x: xs) 가 되는데, 앞에껀 원소고 뒤에오는 xs 는 전체 리스트에서 x 를 제외한 tail 부분이야
아무튼 3시간만 공부해보면 졸라 쉽다는걸 알 수 있다. edx 가서 구글 아이디로 회원가입하고 MIT 에서 제공하는 FP101 6.002.2x 인가 들어봐라. 하스켈로 배우는 함수형 프로그래밍 수업이다
헐 그러면 [a | a <- xs, a > x] 이게 수학에서 배우는 집합의 조건제시법하고 똑같은 거임??
웅 고마웡
응 그래 정확히 똑같음. a 는 xs 밑에 있는 원소들 중 하나인데, x 보다 큰 a 만 찾아서 리스트 형태로 돌려주는게 바로 그 문법이야
오메 신기한 것
헐 시바 머야. 미래에서 온 언어임??? C++로만 하다가 문화충격 받고감
알마 네 전에 재귀 잘한다고 드립쳐던데 하스켈해라 좋다 ㅋ
주판으로 계산하다가 전자계산기를 처음 본 기분이네. 나는 우물안 개구리였어ㄱㄱㄱㄱㄱ
왜 학교에서는 저런 훌륭한 언어는 안배우고 고전 언어만 배우는거임???
교수가 그것밖에 모르니까.. 안타깝게도 그분들은 싱글프로세서가 기준일때 대학을 나오셨고, 지금은 멀티프로세싱을 넘어 분산처리가 산업에서 요구되는 기준인데. 그런걸 모르니까.. MOOC 가서 유명 외국 대학들 수업 들어봐. Python 으로 모델링 가르치고 루비로 스타트업 엔지니어링 같은거 실습한다. 우리나라는. 글렀어
스택 오버플로 가서 엥간한 답변 봐도 "와 진짜 잘안다" 느껴지지 않아? 난 첨 봤을때 그랬는데...
우스갯소리로 한국 개발자가 영어 잘하면 외국가서 대접받는다. 그러잖아..? 난 그럴거 같진 않아.
근데 좀 더 진보된 컴퓨터 방식나오면 함수형 언어쓸까?? 지금 컴퓨터 방식에는 재귀가 느려서 함수형 잘안쓴다는 것같은데
저거 근데 파이썬으로도 고대로 짤 수 있다 파이썬은 재귀에 대해서 최적화가 전혀 안되니까 권장사항은 아니지만 소스는 아름답지 ㅋ
재귀가 문제가 되는 경우는 일반적인 피보나치 구현에서와 같이 스택이 무한정 늘어나는 구조인데 tail recursion 이라고 스택을 한개로만 돌리는 재귀가 있어(대부분 accumulator 로 구현). 그런 경우는 성능이 문제가 안돼. for loop 으로도 바꿔쓸 수 있으니까
근데 하스켈은 재귀 최적화 해줌 더군다나 저건 C++도 최적화 해주는 꼬리재귀
ㅇㅋㅇㅋ 근데 외국대학 커리는 우리나라랑 많이달라?
재귀가 무한정 반복되는 문제를 해결하는 lazy-evaluation 같은 방법도 있어. scala 에선 stream 이라 부르는데 "재귀에 대한 계산" 이 필요한 시점에 이루어 지니까 "무한한 원소를 가진 배열" 같은걸 표현할 수 있지
겨자야 넌 외국 대학가라. 난 이미 후회해도 늦었다
내가 서포카 공대를 안나와봐서 그 학교들 수준이 얼만진 모르겠는데. (아마 좋은 엔지니어들 많이 배출하는 학교니까 좋겠지?) 외국 대학은 깊이가 좀 다른거같아. 일례로 우리가 사용하는 원서 알고리즘 책을 쓴 사람이 알고리즘 과목 교수니까..
나도 테크타기에는 늦음 ㅠ 한국에서 최대한 책이라도 많이봐서 따라잡아야 것네 ㄸ
그냥.. 몇몇 친구들은 아직 나보다 좀 어린거 같으니까. 내가 느낀바를 좀 말해주자면, 본인이 노력하는데는 한계가 있어. 3일에 하나씩 전공책 독파 한다고 해도, 노력보다 '환경' 이 더 큰 영향을 미칠 수 있거든. 시험기간 생각해보면 시험이란 환경때문에 평소보다 더 많은 노력을 하게되잖아? 그러니까, 노력도 정말 중요하긴 한데. 너희같이 학교 다니고, 아직 '안전빵' 속에 있는 친구들은 '환경' 을 바꾸려는 노력을 해봐.
내 대학은 반도체만 밀어줘서 그런가 학과가 발전이 없는거 같어--;;;ㅋㅋㅋ 1234야 그럼 나도 파이썬이나 ios 같은 거 기본적인건 배워두면 좋은거임??
근데 지금도 할거 많은데.. 다른 언어까지 배우면 내 머리 오버플로 날듯
두번째는 '초과달성' 우리 사회에서 모든 어드밴티지를 첫번째로 얻어가는건 목표를 초과달성한 친구들이거든. 그게 점심같은 끼니든, 아니면 학교에서의 학점이든, 사회에서의 고과든. 모든곳에 다 적용돼. 자신이 무언갈 한다면 남들이 느낄 수 있을 정도로 초과 달성해봐. 중요한건 남보다 먼저 초과달성해야 한다는것. 그래야 첫 번째로 주어지는 가장 큰 어드벤테이지를 너들이 가져갈 수 있으니까
iOS 나 안드로이드나 약간의 경험은 도움이 될 수 있겠는데, 아래 글에서와 같이 그건 플랫폼이라서 얼마 이상 배운다고 해도 네가 그걸 직업으로 하지 않는다면 얼마나 이득을 얻을 수 있을진 모르겠네.. 파이썬은 좋은 언어고, 언어론 관점에서 공부해 보는건 좋은것 같아. 너가 아직 스크립트 언어를 못 다루어봤다면.
다양하게 배우는건 좋은데 언어 뭐가 좋니 이딴 개소리는 하지 말길 네가 주판취급하는 C++도 template meta programming은 저런식으로 짬 ㅋ 언어가 문제인게 아니라 쓰는 놈이 문제인거
퀵소트 숏코딩의 진수를 보려면 erlang이나 해라
큼파일러 최고존엄의 문제지 어차피 컴터는 너님들 C로 짜대던 그 순서로 돌아감