[ocaml] вопрос по типам и именованным полям
От: _rasta  
Дата: 11.06.08 04:46
Оценка:
день добрый.

есть что-то вроде:

type type_1 = { field_1: string
              ; field_2: string
              };;

type type_2 = { field_1: string
              ; field_3: string
              };;

let _ =
  let variable_1 = { field_1 = "test"
                   ; field_2 = "test"
                   }
  in print_endline variable_1.field_2;;


ocamlc ./test.ml
File "./test.ml", line 10, characters 19-72:
The record field label field_2 belongs to the type type_1
but is here mixed with labels of type type_2


вопрос: как побороть? раздать разные имена конечно вариант, но...

--
-- via knode --
Posted via RSDN NNTP Server 2.1 beta
подправлена разметка — Кодт
Re: [ocaml] вопрос по типам и именованным полям
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 11.06.08 05:23
Оценка:
Здравствуйте, _rasta, Вы писали:

_>вопрос: как побороть? раздать разные имена конечно вариант, но...


Имена должны быть различными в пределах одного модуля. Если второй тип опишете в другом модуле и будете к нему обращаться соответственно, то переименовывать не придется. Иначе — давать разные имена.
Re: [ocaml] вопрос по типам и именованным полям
От: palm mute  
Дата: 11.06.08 07:31
Оценка:
Здравствуйте, _rasta, Вы писали:

_>[ocaml]

_>type type_1 = { field_1: string
_> ; field_2: string
_> };;

_>type type_2 = { field_1: string

_> ; field_3: string
_> };;

можно так:

module Type1 = struct
    type t = { field1 : string; field2 : string }
end

module Type2 = struct
    type t = { field1 : int; field2 : int }
end

let foo = ( {Type1.field1 = "qqq"; field2 = "www"},
            {Type2.field1 = 42;    field2 = 777 } )
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.