Я делаю домашнее задание для университета и сталкиваюсь со странной проблемой с порталом webassign (вы вводите свой код, и тот проверяет, все ли в порядке).
Нам нужно написать функцию для умножения матриц. Это делается шаг за шагом с использованием векторного умножения, матричного мульт-вектора, матричного мульт-матрицы.
Мой код работает на интерпретаторе smlnj, но не в webassign:
fun v_v_mult [] _ = 0.0
| v_v_mult _ [] = 0.0
| v_v_mult (r::rs) (c::cs) = r*c + v_v_mult rs cs
fun m_v_mult [] _ = []
| m_v_mult _ [] = []
| m_v_mult (rv::rvs) cs = v_v_mult rv cs :: m_v_mult rvs cs
Итак, все хорошо в моем REPL, но webassign говорит мне, что
m_v_mult [[]] []
вызывает исключение. Я не могу воспроизвести исключение в моем REPL, так как приведенный выше код работает, как и ожидалось.
Нужно ли что-то особенное для шаблона, соответствующего списку пустого списка? Я искал stackoverflow, но не нашел подсказки. Можете ли вы дать мне подсказку (или ссылку или ключевое слово для лучшего поиска)?
Спасибо,
Jochen