zapp은 엄밀히 말하면 리스트의 apply가 아니고, 규칙이 성립하는지는 난 확인하지 않았음. 근데 아마 이런 느낌을 전달하고 싶었을 거라고 생각.
원하는 자료였으면 함.
댓글 16
정말 정말 감사합니다.
기괴공학도(mecheng98)2019-04-18 08:11
기괴공학도(mecheng98)2019-04-18 08:11
덕분에 이해되긴 했는데, zapp와 repeat은 ap와 return은 아니지만 <*>와 pure가 될 수 있지 않나요? monad는 아니지만 applicative인 것 같아요.
기괴공학도(mecheng98)2019-04-18 09:18
답글
ap하고 <*>은 같은 거임. ap는 bind로 바꿔야 할 듯.
내가 규칙이 성립하는지 확인하지 않았다고 한 게 applicative law를 말하는 거였음. 근데 확실히 가능하긴 한 듯. 모나드 인스턴스도 짤 수 있을지도 모르지. 근데 말했다시피 내가 수학은 젬병이라 증명같은 걸 스스로 제공해줄 수 없어서 설명에서 빼버린 거임.
나니킷(nanikit)2019-04-18 09:37
답글
형님, 논문에서 연습문제로 이 alternative monad의 join을 짜는 게 나오네요. 같이 풀어봅시다.
기괴공학도(mecheng98)2019-04-18 09:53
답글
혹시 하스켈 원래 모나드 인스턴스하고 다르게 짜야하는 거면 알려주셈. 딱히 달라질 필요가 없을 것 같음.
나니킷(nanikit)2019-04-18 09:56
답글
혹시나 하고 봤더니 repeat을 return으로 쓴다는 전제가 들어가 있었네. 그럼 그대로 쓰는 건 안 될 것 같고…… 근데 난 더이상 머리굴리지 않을 거임;;
나니킷(nanikit)2019-04-18 10:06
<*>가 ap인데 다르니까 join도 다르게 짜야되지 않나요?
기괴공학도(mecheng98)2019-04-18 10:03
예 감사합니다
기괴공학도(mecheng98)2019-04-18 10:07
n × n 행렬 A에 join을 취하면 수열 [A_{1, 1}, ..., A_{n, n}]이 되겠죠?
기괴공학도(mecheng98)2019-04-18 13:10
답글
하스켈 리스트 모나드 인스턴스 join 정의는 concat이니 그렇겠지
나니킷(nanikit)2019-04-18 13:57
답글
아 죄송합니다. 잘못 말했네요. alternative monad의 join 메소드를 취하면 [A_{1,1}, A_{2,2}, ..., A_{i, i}, ..., A_{n, n}]을 얻나요?
기괴공학도(mecheng98)2019-04-18 14:11
답글
…… 왠지 문제를 풀도록 유도당하는 것 같은데. 한 번 푸는 거 시도해보고 답변할 수 있으면 알려드림.
나니킷(nanikit)2019-04-18 14:21
답글
ap [f1, f2] [x1, x2] = join [join [repeat (f1 x1), repeat (f1 x2)], join [repeat (f2 x1), repeat (f2 x2)]]이어야 될 것 같은 느낌을 받아서요.
정말 정말 감사합니다.
덕분에 이해되긴 했는데, zapp와 repeat은 ap와 return은 아니지만 <*>와 pure가 될 수 있지 않나요? monad는 아니지만 applicative인 것 같아요.
ap하고 <*>은 같은 거임. ap는 bind로 바꿔야 할 듯. 내가 규칙이 성립하는지 확인하지 않았다고 한 게 applicative law를 말하는 거였음. 근데 확실히 가능하긴 한 듯. 모나드 인스턴스도 짤 수 있을지도 모르지. 근데 말했다시피 내가 수학은 젬병이라 증명같은 걸 스스로 제공해줄 수 없어서 설명에서 빼버린 거임.
형님, 논문에서 연습문제로 이 alternative monad의 join을 짜는 게 나오네요. 같이 풀어봅시다.
혹시 하스켈 원래 모나드 인스턴스하고 다르게 짜야하는 거면 알려주셈. 딱히 달라질 필요가 없을 것 같음.
혹시나 하고 봤더니 repeat을 return으로 쓴다는 전제가 들어가 있었네. 그럼 그대로 쓰는 건 안 될 것 같고…… 근데 난 더이상 머리굴리지 않을 거임;;
<*>가 ap인데 다르니까 join도 다르게 짜야되지 않나요?
예 감사합니다
n × n 행렬 A에 join을 취하면 수열 [A_{1, 1}, ..., A_{n, n}]이 되겠죠?
하스켈 리스트 모나드 인스턴스 join 정의는 concat이니 그렇겠지
아 죄송합니다. 잘못 말했네요. alternative monad의 join 메소드를 취하면 [A_{1,1}, A_{2,2}, ..., A_{i, i}, ..., A_{n, n}]을 얻나요?
…… 왠지 문제를 풀도록 유도당하는 것 같은데. 한 번 푸는 거 시도해보고 답변할 수 있으면 알려드림.
ap [f1, f2] [x1, x2] = join [join [repeat (f1 x1), repeat (f1 x2)], join [repeat (f2 x1), repeat (f2 x2)]]이어야 될 것 같은 느낌을 받아서요.
포기.
https://stackoverflow.com/a/6513103
나는 힌트를 봐도 감이 안 잡힘.
이거대로라면 위에서 말한 join 메소드의 결과가 대각선으로 뽑아내는 게 맞을 듯.
정말 감사드립니다.