manywaypark's Blog
개발, 검색, 함수

'wide'에 해당되는 글 1건

  1. 2008.10.10 [TIP] wide->narrow (전각->반각?)
제목의 용어가 정확한지 잘 모르겠다. 작업도중 필요해서 만들게 되었는데 함수형 언어의 장점(REPL의 장점)을 부각시킬 수 있는 예제가 될 수 있을 것같아서 포스팅한다.
전각 문자를 반각으로 문자열 변환하는 간단한 함수를 하나 만들었는데 좀 꼼수(?)를 동원해서 얄팍하게 재빨리 만들었다.
정확하게 하려면 몇몇 자료를 참조해야하겠지만, 필요한 상황의 테스트 케이스는 다 통과하므로 그대로 쓰기로 했다.

(emacs@desktop)1> "ABC012". % wide chars
"\357\274\241\357\274\242\357\274\243\357\274\220\357\274\221\357\274\222".
[239,188,161,239,188,162,239,188,163,239,188,144,239,188,
 145,239,188,146]
(emacs@desktop)2> "A".         % wide char
"\357\274\241".
(emacs@desktop)3> "A".          % normal char
"A"
(emacs@desktop)4> "0".         % wide char
"\357\274\220".
[239,188,144]
(emacs@desktop)5> $0.           % normal char
48

패턴이 보이는가?
[239,188] ("\357\274") 뒤의 숫자만 변한다. ^^;
자연스럽게 다음과 같은 함수가 만들어진다.
%% 96 = last("1") - $1
'wide->narrow'([239,188,C|T]) ->
    [C - 96 | 'wide->narrow'(T)];
'wide->narrow'([C|T]) ->
    [C | 'wide->narrow'(T)];
'wide->narrow'([]) ->
    [].

결과:
(emacs@desktop)8> str_util:'wide->narrow'("ABC012").
str_util:'wide->narrow'("\357\274\241\357\274\242\357\274\243\357\274\220\357\274\221\357\274\222").
"ABC012"

REPL이 지원되지 않는 언어였더라면 과연 이렇게 눈깜짝할 사이에 만들 수 있었을까?
단위 작업의 feedback이 즉시 확인되는 것은 엄청난 매력이자 장점이다.

happy hackin'
1 
분류 전체보기 (306)
잡담 (20)
함수형 언어 (65)
emacs (16)
java (18)
tips & tricks (154)
사랑 (1)
가사 (0)
독서 (4)
mobile (6)
비함수형 언어 (2)

공지사항

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

04-25 06:24