에 string -> nat
변환 함수를 작성하고 싶습니다. 여기서 문자열 내용 만 number는 nat
을 반환하고 그렇지 않으면 숫자가 포함 된 알파벳이나 알파벳 또는 숫자가 포함되지 않은 모든 경우 (예 : ', -, ...) 0
을 반환합니다.Coq의 문자열에서 nat로 변환 함수
예를 들어 :
"0", "1", "2", "3", ... "99",..
는 반환합니다
"a", "bc", "..0d"
0, 1, 2, 3, ..., 99, ...
이 ... 반환합니다 0
나는 Coq
에서이 기능을 쓸 수 있습니까?
나는 혼자 노력했지만 어떻게하면 숫자를 바꿀 수 있고 나의 예처럼 알파벳을 변환 할 수 있을지 모르겠다.
Require Import Ascii String.
Definition nat_of_string (s : string) : nat :=
match s with
| EmptyString => 0
| String (s) _ => nat_of_ascii s
end.
음수 ('-'로 시작하는 문자열)를 지원하려면 num_of_string을 패치하고 '-'또는 숫자인지 확인하기 위해 첫 번째 문자를 읽는 것이 매우 쉽습니다. – Vinz
string_scope 대신 ascii_scope를 열면 생성자 Ascii 대신 일치 항목 ("1", "2"등)에서 ascii 리터럴을 사용할 수도 있습니다. –