monad-lab / study

2 stars 1 forks source link

[CH3] P.44 코드가 이해가 안됩니다. #30

Open y30n9ju1v opened 10 months ago

y30n9ju1v commented 10 months ago

IMG_462872D6403F-1

설명좀 부탁 드리겠습니다ㅠ

leechanwoo commented 10 months ago

권장되는 스타일은 아닙니다 함수가 아닌 그냥 변수로 바로 패턴매칭해서 가져오는 스타일이에요

하스켈에서 딱히 패턴매칭을 함수용, 변수용 이렇게 구분하진 않는게 함수의 argument를 패턴매칭해서 넘겨주면 그게 곧 변수에 패턴매칭하는 것과 동일한 동작입니다

expression(변수 포함)이 들어갈 수 있는 모든 곳에서 pattern matching할 수 있습니다

zlqhem commented 10 months ago
  where (l:_) = firstname
         (f:_) = lastname

저도 처음보고 이해가 안가서 이렇게 바꿔서 실행해보니..

firstname 변수를 리스트형태로 x:xs로 매칭했을때 첫번째 element 를 l 에 매칭, lastname 도 리스트의 첫번째 element 를 f 에 매칭하겠다는 의도인거 같습니다.

원래 코드기준으로는 firstname 의 첫번째 캐릭터를 f 로 바인딩, lastname 의 첫번째 캐릭터를 l 로 바인딩 하겠다는 것 같습니다.