디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

하스켈의 비밀을 서서히 파헤쳐가는중모바일에서 작성

딱국졸디(175.223) 2023.03.31 01:20:09
조회 112 추천 0 댓글 0

하스켈에는 변수가 없다.

값을 담는 그릇이라는 개념이 없고
함수 선언밖에 존재하지 않는다.

x = 3 이라고 쓰면 x는 3이라는 값을 반환하는 함수 인 셈이다.

이것을 어디에서 확인 가능하냐면

infiniteList = 0 : infiniteList 를 통해 확인 가능하다.
데이터 타입 리스트. 하지만 인피닛리스트는 값이냐? 노노 함수. 상태가 계속 변한다.

아 함수인건 알겠어, 그럼 무한 루프 아니냐고?

이건 하스켈의 LAZY와 관련있다.



어쨌든, 하스켈에는 변수가 없다.

변수가 없이 어떻게 프로그래밍이 가능할까.

일단 코드가 흐름에 따라 변수라는 상태저장소가 없으므로
무언가 상태를 저장하려고 하면 죄다 argument로 받아와야한다.

아규먼트를 계속 이어가는거다.

꼬리재귀에서 흔히 보는 패턴이다.




이 아규먼트를 계속 이어가는 패턴이 바로 다른 언어로 비교하자면 스트림이다.


하스켈은 함수를 전부 일종의 스트림으로 짠다.


앞서 모든 변수는 함수라고 했다.

이는 다른 말로, 모든 함수는 값을 내뱉는다고 표현할 수 있다.

하스켈의 절차지향은 다음과 같이 이뤄질 수 있다.

"1번함수의 결괏값과 2번함수의 결괏값을 연산한다"

즉 사실은 연산작용이 필요없이 1번 실행 2번 실행 하면 될것을, 하스켈은 두 값을 연산해야한다.

그리고 연산해야한다는 의미는?

타입이 제한된다.


모나드.

같은 모나드 안에서만 함수를 체이닝 할 수 있다.


그리고 또 제약조건이 있다.

하스켈은 퓨어하다.
따라서 1번 연산은 받는 인자를 제외하면 연산이 동일하고
이는 2번 연산도 마찬가지다.

2번연산과 1번연산이 공통으로 쓰는 데이터가 있다면,
그것을 저장할 저장소가 없다.
반복해서 말하자면, 인자로 건네줘야 한다.

우린, 1번연산의 결과를 2번 연산에게 전달해줘야한다는것을 알 수 있다.
1~4번 연산 전체에 공통으로 전달되는 값을 만들려면?
1번이 2번에 전달 2번이 3벗에 전달 3번이 4번에 전달하는거다.
그 사이에 인자를 바꿔서주면 변수가 변했다고 여길 수 있다.

여하튼 전달을 하는 방법을 마련해야한다. 이때 필요한것이 Bind다.


앞서, 1번연산과 2번 연산을 시퀀싱하는 연산도 같은 모나드 안에 정의된 연산이고
지금 말하는 bind도 같은 모나드 간에 값을 전달해주는 연산이다.


후... 시퀀싱과 바인딩이 있다면 절차지향이 가능하다.

그리고 여기에 한가지 더 추가하자면, 모나드의 개념은 아니고
"nesting"이 있다.

변수x라는 개념을 만들기 위해

리턴에 (리턴값, x값) 순서쌍을 계속 담아 보내고
인자로 x값을 패턴매칭으로 계속 빼내는 방법
이거를 매 시퀀스마다 달아주는 방법도 생각해볼수 있으나

더 사용범위가 좁지만 간편한것은,
람다식 안에 람다식 쓰기 이다.

x값을 인자로 받은 후,
해당 람다 안에서 시퀀스를 진행한다.

1 2 3 4 대신

1 (2-1) (2-2) (2-3) 으로 진행한다.
이러면 2는 x를 인자로 받았으므로 2다시 1 2 3 모두에서 x를 사용할 수 있다.
단 이 경우 x는 불변이다.


아마 이 nesting방법이 함수형 코딩스타일일 것이고
앞서말한 튜플에 모든 변수를 담아 계속 전달하는 방식은 내가 생각해낸 괴이한 방법일 것이다.


그럼에도 난 알아야만 한다.


함수형은 과연 구현력을 포기한 언어인가?

얘기를 들어보면 구현력을 포기한 언어는 아닌것 같다.

그렇다면 구현이 가능은 하지만 빙 돌아가는가?

그런 얘기도 잘 나오지 않는다.

오히려 표현력이 좋다는 얘기들이 나온다.(리습)


어째서?


이 물음은 아직도 해결되려면 멀었다

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 운전대만 잡으면 다른 사람이 될 것 같은 스타는? 운영자 24/04/15 - -
이슈 [디시人터뷰] 집념닥터, ‘내가 사랑하는 커뮤니티, 디시인사이드’ 운영자 24/04/16 - -
공지 프로그래밍 갤러리 이용 안내 [68] 운영자 20.09.28 33983 62
2682484 카톡에서 사람 이름으로 찾는 방법 없냐? ㅇㅇ(210.97) 11:39 2 0
2682483 벌써 4/19 혁명 기념 64주년..., 사요나라(14.35) 11:29 6 0
2682482 지금 기준으로 개발자는 연봉의 상하방이 상당히 넓은 직종이다 프갤러(59.12) 11:24 14 0
2682481 나님 시작합니당❤+ ♥냥덩나르도다빈치♥갤로그로 이동합니다. 11:24 7 0
2682480 나님 시작합니당❤ ♥냥덩나르도다빈치♥갤로그로 이동합니다. 11:17 9 0
2682479 아 짜쯩나 아마존에 서버 요금 엄청 바쳤네. 3년간 이제 끝남. [1] 사요나라(14.35) 11:02 35 0
2682478 요즘 SNS 거의 어디 이용해? [6] ㅇㅇ(210.97) 10:54 26 0
2682477 페트병 주운돈 경조사비 내면 어떤 기분일까... 사요나라(14.35) 10:48 7 0
2682476 근데 개발자 대우는 원래 이랬음 ㅇㅇ(221.144) 10:46 37 1
2682475 어제 팔도비빔면 2개 먹었어 딱지(210.183) 10:42 11 0
2682474 따당? ♥냥덩나르도다빈치♥갤로그로 이동합니다. 10:41 14 0
2682473 재활용 페트병 주워서 슈퍼빈으로 포인트 벌고 있습니다. 사요나라(14.35) 10:40 10 0
2682472 나님은 미래를 걷는당 ♥냥덩나르도다빈치♥갤로그로 이동합니다. 10:39 17 0
2682471 엔비디아 GPU 24GB 이 30만원대 하는 세상이 올까 [1] ㅇㅇ(221.144) 10:39 14 0
2682470 빡대가리 질문좀 [1] 프갤러(118.32) 10:35 20 0
2682469 감기약 더블로 먹었다..ㅇㅅㅇ [1] 헤르 미온느갤로그로 이동합니다. 10:32 18 0
2682468 너뮤 힘들다 금융오지마라갤로그로 이동합니다. 10:30 13 0
2682467 아!!!! 내 인생 최고다! ㅇㅇ(118.235) 10:28 9 0
2682466 젠투깔아볼까 [1] 골방외톨이갤로그로 이동합니다. 10:21 26 0
2682465 음흉씹덕이 구루가 되어도 될지 ㅇㅇ(118.235) 10:20 10 0
2682464 드디어 연봉 3천찍음 질문 받는다 [4] 팜팻(114.204) 10:20 38 0
2682463 따당이 개발자 많이 뽑는 시기 잘탔네 프갤러(211.234) 10:19 20 0
2682462 국비지원 듣고 나면 내일배움카드 잔액 0원됨? 프갤러(116.36) 10:13 12 0
2682461 요즘은 사람들 토렌트 별로 안쓰나봄 [4] 노력갤로그로 이동합니다. 10:13 39 0
2682460 따당이 아침엥 영어회화 공부중 ㅇㅅㅇ [1] 따당이갤로그로 이동합니다. 10:13 19 0
2682459 너무 많이 아는것이 때론 독이된다 ♥냥덩나르도다빈치♥갤로그로 이동합니다. 10:12 19 0
2682458 오타쿠직업 개발자들의 세상 종결 ㅇㅇ(211.220) 10:06 24 0
2682457 나님 시작합니당❤+ ♥냥덩나르도다빈치♥갤로그로 이동합니다. 10:03 8 0
2682456 pyinstall 질문 프갤러(121.171) 10:03 7 0
2682454 회사소스 modelattribute 안쓰고 requestparam [1] 프갤러(106.101) 09:57 15 0
2682453 아니 왜이렇게 게시글들이 저렴해졌냐? [9] 프갤러(124.54) 09:37 70 0
2682452 퇴사 한다고 하면 붙잡히려나.. [12] ㅇㅇ(211.234) 09:30 79 1
2682451 냥덩이를 냥덩답게 위대하게 찬란하게⭐+ ♥냥덩나르도다빈치♥갤로그로 이동합니다. 09:20 16 0
2682450 나 fbi얌 ㅇㅇ(118.235) 09:18 10 0
2682449 가스라이팅 때문에 포기했어 ㅇㅅㅇ 나트륨찡갤로그로 이동합니다. 09:15 21 0
2682448 잘생기게 태어나는 법 ㅇㅅㅇ 나트륨찡갤로그로 이동합니다. 09:11 19 0
2682447 누가 대피소 마갤좀 파라 프갤러(106.101) 09:10 17 0
2682446 나님 시작합니당❤+ ♥냥덩나르도다빈치♥갤로그로 이동합니다. 09:09 11 0
2682445 명문대도 가스라이팅이지 ㅇㅅㅇ [1] 류류(118.235) 09:06 29 1
2682444 Chatgpt가자살율을획기적으로낮춰주지않을까 보법e노무현갤로그로 이동합니다. 09:06 20 0
2682443 가난한 집애들 명문대갓는데 [2] ㅇㅇ(118.235) 09:03 41 0
2682442 이미지 저장할 스토리지 추천좀 해쥬십쇼 [2] 낙인도락이다갤로그로 이동합니다. 08:57 26 0
2682441 고졸 국비출신 7년차로써 4년제 니들이 뭐 어쩔건데 ㅋㅋ [3] 프갤러(118.235) 08:51 60 1
2682440 내 방 전경 어때보임? [3] 메쿠이로갤로그로 이동합니다. 08:43 48 0
2682439 나님 사실 삼체냥임.. 인간들을 멸종시키러 왔응 ♥냥덩나르도다빈치♥갤로그로 이동합니다. 08:28 26 0
2682438 나님 시작합니당❤+ [1] ♥냥덩나르도다빈치♥갤로그로 이동합니다. 08:19 25 0
2682437 나는 매드사이언티스트여 ㅇㅇ(118.235) 08:18 17 0
2682436 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 08:16 22 0
2682435 여자애 생식기 폭파 하고 싶음 ㅇㅅㅇ 류류(118.235) 08:12 18 1
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2