Пожалуйста, рассмотрите следующие определения записи:
type A = { F1 : int; F2 : int }
type B = { F1 : int; F3 : int }
// error FS0656: This record contains fields from inconsistent types
let a1 = { F1 = 1; F2 = 2 }
// this works
let a2 = { A.F1 = 1; F2 = 2 }
Я не понимаю, почему a1 приводит к ошибке.
Все примеры, которые я мог найти, почему вы должны сделать это a-way, предполагают, что все имена полей в A и B имеют одно и то же имя - что, конечно, неоднозначно, но не должно Aи B быть различимым при наличии хотя бы одного отдельного поля?
Может быть, это просто способ, которым F # оценивает это, и добавление имени типа в первое поле, конечно, не составляет большого труда, но мне просто любопытно.
РЕДАКТИРОВАТЬ: Спасибо за ответы, которые помогли мне заметить нечто довольно странное: весь фрагмент работает, когда я оцениваю его в первый раз (ALT + Enter в VS 2010).
Когда я пытаюсь оценить второй раз, я получаю сообщение об ошибке.
Если никто не может воспроизвести это, моя установка VS, вероятно, не работает ...
EDIT2 (хорошо, время создавать учетную запись здесь, извините за правки) Спасибо wmeyer (и всем остальным)за то, что нашли время взглянуть на проблему и дать понять, что я неправильно понимаю, как работает FSI.Все прояснилось сейчас!