LangDev

흰눈 - 값 교환 소스 코드

민군

흰눈 - 값 교환 소스 코드

값 교환 메서드를 정의 한후 값 교환을 수행하고 그 값을 출력한다.

*이 언어는 아직 설계중이라 나중에 소스가 바뀔수도 ^^;

new object(method) <->(~val.b)
  ~val.a :=: -arg[1]
  tmp = ~val.a
  ~val.a = ~val.b
  ~val.b = tmp
ok
a = 5
b = 2
std<<a
std<<b
a <-> b
std<<a
std<<b

출력은 ...

5

2

2

5

가 되겠죠.

a :=: b 일때, 일단 a 에 b 값을 집어넣고, 나중에 a 값이 바뀌면 b 값이 바뀌고, b 값이 바뀌면 a 도 바뀌는 개념입니다. = 대신 :=: 을 쓴 이유는.... 아무것도 없어요 ^^

그리고... -arg[1]... name 을 기준으로, name 앞의 값들은 공백을 기준으로 -arg[n] 에 집어넣고 뒤의 값들은 공백 기준 +arg[n] 에 집어넣습니다.

물론 메서드 선언시 인자를 넘겨줬다면 매개변수와 +arg[n] 양쪽에서 접근이 가능합니다.

마지막으로.. 네이밍.. 공백과 주석문자만 제외하면 됩니다 ^^

왠지모르게 지저분하게 보이는 코드이네요;

제가 이거 잘 몰라서 로제타에 주제를 올렸었는데...

하여간 순혈주의 쪽은 아닌가 보군요.

누군가 swap이 사용되는 정렬함수의 적절할 대안을 보여주능 예제를 보여줄 수 있나요? 흠... Purely Functional Data Structures 을 읽어봐야 하나?

http://haskell.org/haskellwiki/Introduction 의 QuickSort 예제 말고요.

김우승

비교 정렬이 아니라면 radix sort 같은 걸 원하시나요?

lifthrasiir

아뇨, 제가 원하는 것은 비교 정렬입니다. 일반적으로 imperative 방식으로 기술된 algorithm에서 비교와 swap을 활용한 정렬함수들, 즉 QuickSort, HeapSort, SelectSort, BubbleSort, InsertionSort와 유사한 것, 혹은 적절한 대안을 보여주셨으면 합니다.

많은 함수형언어 style에서 자랑하는 Haskell homepage의 QuickSort는 MergeSort랑 유사한 느낌이 강하더군요.

실제로 Programming Erlang에서는 그 예제를 효율성은 대단히 떨어진다고 말하고 있습니다. 다만 우아함을 보여줄 뿐이라고 하고 있죠.

김우승

Quicksort in Haskell

(전 코드는 안 읽어봤습니다. 그냥 검색하다 나온 것;;)

디토

제가 잘 이해를 못하고 있습니다만 imperative style인 것 같군요. 찾아주신 code를 이해하기 위해서라도 공부가 필요하겠다는 것을 느끼게 하느군요.

김우승