Я хотел бы определить функцию в Isabelle/хол, которая удваивает списокФункция двойной список в Isabelle
fun double :: "'a list => 'a list" where
...
такое, что double [x1, x2, ...] = [x1, x1, x2, x2, ...]
Я попробовал следующее:
fun double :: " 'a list ⇒ 'a list" where
"double [] = []" |
"double [x#[l]] = x # x # double [l]"
, а также некоторые другие определения. Я получаю ошибку
Тип объединения не удалось
Тип ошибки в применении: несовместимый тип операнда
Что случилось с моей функции?