홈>
나는 다음과 같은 유형의 함수를 작성하려고 시도하고있다 :
partitionByFirstChar :: [String] -> Map.Map Char [String]
partitionByFirstChar xs
Map
를 반환합니다
그 키 목록
xs
에서 각 문자열의 첫 번째 문자입니다
그 값은 해당 문자열의 접미사 (즉, 첫 문자를 제외한 모든 문자)의 목록입니다.
이 작업을 수행하려는 시도는 다음과 같습니다.
partitionByFirstChar [] = Map.empty
partitionByFirstChar ((x:xs):xss)
= ???
where partitioned = partitionByFirstChar xss
suffixes = partitioned !? x
이제
suffixes
Nothing
가 될 수 있습니다
또는
Just s
. 그것이
Nothing
라면
나는
insert x [xs] partitioned
하고 싶다
. 그것이
Just s
라면
그런 다음
insert x (xs:s) partitioned
하고 싶습니다
.
나는 무엇을
suffixes
확인하는 방법을 알아내는 데 어려움이있어
입니다. 나는 내가
???
에 대한 패턴 매칭의 어떤 필요가 있다고 생각
하지만 알아낼 수는 없습니다.
- 답변 # 1
- 답변 # 2
Now 와이즈 비즈
suffixes
가 될 수 있습니다 또는Nothing
. 그것이Just s
라면 나는Nothing
하고 싶다 . 그것이insert x [xs] partitioned
라면 그런 다음Just s
하고 싶습니다 .여기서 기본적인 접근 방식은
insert x (xs:s) partitioned
를 사용하는 것입니다 :case of
위의 코드에는 여전히 빈 문자열에 대한 분기가 없습니다 (예 :
partitionByFirstChar [] = Map.empty partitionByFirstChar ((x:xs):xss) = let partitioned = partitionByFirstChar xss suffixes = partitioned !? x in case suffixes of Nothing -> insert x [xs] partitioned Just s -> insert x (xs:s) partitioned
partitionByFirstChar ("":xss) = partitionByFirstChar xss
관련 자료
- algorithm - Elixir에서 "문자열의 첫 번째 고유 문자"해결
- fs는 첫 번째 CSV 속성을 문자열로 읽습니다 타이프 스크립트
- c# - 구분 기호로 문자열의 처음 다섯 문자를 얻는 방법
- parsing - 문자열의 첫 번째와 마지막 문자를 바꾸면 세그 오류가 발생합니다
- python - 줄의 첫 번째에서 약간의 공백을 사용하여 각 줄에 문자열을 인쇄하는 방법은 무엇입니까?
- function - 첫 번째 매개 변수가 User 유형 인 이유는 무엇입니까? Typescript는 누구든지 나를 설명 할 수 있습니다
- oracle - sql - 첫 번째 공백까지 문자열
- python - 길이가 1 인 경우 문자열에서 첫 번째 단어 제거
- r - 문자열에서 처음 두 단어 제거
- bash - 문자열에서 처음 N 개의 문자 뒤에 하이픈을 추가하고 #로 시작하는 문자열 부분도 제거합니다
- python - 첫 번째와 마지막 문자를 제거하는 것뿐만 아니라 문자열이 k- 회문인지 확인
- python - 문자열에있는 모든 단어의 첫 글자를 대문자로 표시 (임의의 간격 사용)
- javascript - ''의 첫 번째 인스턴스로 문자열을 분할하는 방법
- java - 첫 번째 대문자에서 문자열 분할
- javascript - 첫 번째와 마지막 문자없이 문자열을 반환하려고하지만 TypeScript에서 코드가 중단됩니다
- python - 문자열 열에서 발견 된 첫 번째 달 이름 추출
- substr - PHP로 라틴어가 아닌 문자열의 첫 글자를 얻는 방법
- bash - 변수에 저장된 첫 번째 및 마지막 문자열 항목 표시
- scala - List (Double, (String, List [String]))를 먼저 Double로 정렬 한 다음 튜플의 첫 번째 String 값으로 정렬합니다
는
multimap
를 사용하고자하는 경우 패키지를 통해이 문제를 쉽게 해결할 수 있습니다.fromListWith
@Alec의 의견에서 지적했듯이MultiMap
를 사용할 필요가 없다면 아마도 더 나은 선택 일 것입니다. 유형. 성능 인해 목록 연결에 큰되지 않을 수도 있지만.