0
мой код выглядит следующим образом:Visual Studio - F # - FS0588 Error: Блок ниже этого "давайте незавершенной
type appointment=
|Probationary of int
|Fixed
type GradeLevel =
| Junior_Dev of appointment
| Dev
| Senior_Dev
| PM
| Architect of int
type person = {gradeLevel: GradeLevel ; title: string; salary: float; name: string}
let John_C = {gradeLevel=Dev; title="Hamster..."; salary= 3500000.0; name= "John Connor"}
let James_J = {gradeLevel=Junior_Dev (Probationary 3); title="Gofer"; salary= 3500000.0; name= "James Joyce"}
let splitter (EmpList: person list) =
let rec splitter remaining (j,d,s,p,a) = //HERE IS THE LINE OF THE ERROR
match remaining with
| [] -> (j,d,s,p,a)
| x::xs ->
match x.gradeLevel with
| Junior_Dev w -> splitter xs (x::j, d, s, p, a)
| Dev -> splitter xs (j, x::d, s, p, Arch)
| Senior_Dev -> splitter xs (j, d, x::s, p, a)
| PM -> splitter xs (j, d, s, x::p, a)
| Architect w -> splitter xs (j, d, s, p, x::a)
splitter EmpList ([],[],[],[],[])
Я не могу найти мою ошибку на этой линии. В основном с сплиттером: я хочу взять список сотрудников и вернуть кортеж со списками Gradelevel ... Поэтому я мог видеть все мои разработчики и PM отдельно, используя эту функцию.
Все, что вы видите не так? Спасибо
Я подозреваю, что уровень отступов вызова 'splitter' неверен. Убедитесь, что он находится на том же уровне, что и определение 'splitter'. – Lee
Проверьте пробелы - возможно, вы смещены «let rec ...» и вызов «сплиттера» – Petr
Невозможно воспроизвести; единственная ошибка, которую я получаю при вставке, заключается в том, что 'Arch' не определен. Я не могу не заметить, что ваше использование пробелов очень непоследовательно. Только смещения случаев «GradeLevel» и области «match x.gradeLevel» следуют стандартным форматированием F #. Как сказал Ли и Петр, это, вероятно, будет проблемой с отступом. – Vandroiy