foo(dict, keys)
dict가 {1:2, 3:4, a:0, b:-1, c:3}이고
keys가 [a,b,c]면
함수의 결과는
[
{1:2, 3:4, a:0, }
{1:2, 3:4, b:-1 }
{1:2, 3:4, c:3}
]
이거임
자세히 설명하자면
dict를 keys의 길이만큼의 배열로 복사한 다음에
{1:2, 3:4, a:0, b:-1, c:3}
=>
[{1:2, 3:4, a:0, b:-1, c:3}
{1:2, 3:4, a:0, b:-1, c:3}
{1:2, 3:4, a:0, b:-1, c:3}]
거기서 keys의 원소 중 하나씩만 남기고 나머지는 제거함
=>
[{1:2, 3:4, a:0, }
{1:2, 3:4, b:-1 }
{1:2, 3:4, c:3}]
이 함수 이름을 뭐라고 하지..?
동작은 갱장히 명확하고 재활용도 가능할 거 같은데
이름을 못 짓겠음
뭐야? Select임?
좀 다름 select면 보통 dict에서 선택한 key만 남겨서 dict 하나만 나와야하는데
그냥 DuplicateDictByKeys 이런 식으로 대충대충 지어버리고 주석으로 예시 착실하게 써주면 될 부분이라고 생각하는데 너무 깊게 생각하면 더 직관성과는 멀어질 수 있음
일단 이름 추천 ㄳ합니다
제가 빡대가리라서 그런데 저 함수의 동작을 이해 못하겠습니다. 설명 좀 해주십시요
설명이 부족한 거 같아서 수정했음니다
아니면 애초에 저 두 동작을 하나로 합치지 말고 두개로 나누는 게 더 명료할 수도 있을 것 같은데
그것도 좋네여, 그러면 앞쪽은 repeat고 뒤쪽만 생각하면 되겠음
흠 select and enumerate? - dc App
확실히 select 있는 게 좋아 보임
enumExclusive keys map 어떰 keys 에 대해 배타적인 쌍들을 나열한다는 의미로. exclusiveOn keys map 이러면 저 조건을 만족하는 predicate 이름 같고..
enumXor 이 더 맞을것 같기도. keys가 하나도 없으면 공집합 리턴해야 일관적이니까
이게 dict를 ks -> vs의 함수로 보면 dict의 ks 집합과 인자 keys 집합에 대한 연산으로 볼 수도 있을 거 같은데.. 그런 의미에서 xor?
enumXor 괜찮네 이상하게도 함수형 냄새가 나는 것 같은 느낌이야
n개 bool에 대한 xor이면 n개중 정확히 1개만 참일때 참이잖아. 원소 n개중 1개만 있어야 한다는 말임
근데 이러면 keys에 포함 안된 key들이 모두 포함되야 한다는 조건이 빠진 느낌이긴 하네.. 그런 의미에서는 branchOn keys map 가 괜찮을지도
xor은 좀 이해되는데 branchOn은 하스켈에서 온 네이밍임?
ㄴㄴ 그냥 맘대로 지었는데. keys를 기준으로 해서 map을 분해하는거니까.
도움 많이 됬음 특히 keys 인자명을 단순 keys로 안 하고 xor 의미 넣으면 이해가 잘 될 거 같음
근로저에서는 dict에서 key 빼는 걸 dissoc이라고 하는데(dissociate) xor-dissocds 정도로 하면 되려나.. 일단 이렇게 결정함 코딩은 내일 할거라서 자고 일어나면 생각이 바뀔지도
센세 여러분 감사하읍니다 데ㅐ충 결정 했슴다
subtract_by_keys - dc App
sex
roommate 네요 (3개 같이하면 roommates) 딕당 고유 키, 밸류 (a,b,c; 방 열쇠) 가있고 공유 키, 밸류 (1,3; 공유 방, 빨래방 열쇠같은). 간단하게 짓는게 최고임