type s_program =
{ globals : s_var list;
main: s_block; }
and s_var =
{ s_var_name: string;
s_var_type: s_type;
s_var_uniqueId: s_uniqueId }
and s_uniqueId = int
내 프로그램의 한 지점에서 p: s_program
변수가 있지만 p.globals
의 모든 요소를 s_var_uniqueId
으로 변경해야합니다 (예 : 1
를 모든 s_var_uniqueId
에 추가). 몇 가지 질문이 있습니다 :
1) 직접 p
에서 관련 값을 수정하거나 새 값을 새 p':s_program
에 할당해야합니까? 2) 다음과 같이 작성할 수 있습니다.
let p' =
{ p with
globals = List.map (fun var -> { var with s_var_uniqueId = var.s_var_uniqueId + 1 }) p.globals
대단히 감사합니다.
편집 1 : 제안 된대로 with
부분을 수정하십시오.
고맙습니다 ... – SoftTimur
@akoprowski :이 가능성을 잊어 버렸습니다 (변경 가능한 '키워드'). 더 명료하기 때문에'ref'를 선호합니다^_ ^ –