У меня есть проект sml-nj, в котором я хочу работать со структурой «списка списков», которая имеет «квадраты». Я пытаюсь вставить значения в список списков рекурсивно, но я до сих пор не понял, как вставлять элементы в список 2d. Примечание - Я НЕ МОГУ ИСПОЛЬЗОВАТЬ 'REF', ТОЛЬКО http://smlfamily.org/Basis/list.html#SIG:LIST.app:VAL эти функции.2d matrix sml inserting to list - simple code
datatype SquareContent = Mine | Digit of int | Blank;
datatype Square = Revealed of SquareContent | Concealed of SquareContent;
fun createMineSweeperGrid (n:int)
:(Square list list)=
let
fun createMines (rowCounter:int, colCounter:int
, retGame:Square list list):(Square list list) =
if rowCounter=n then
retGame (* finished all rows, should be n lists of size n*)
else
if colCounter=n then (*finished current row, move on*)
createMines (rowCounter+1, 0, mines,retGame)
else
let
val squareToInsert = Concealed(Mine) (* I wish to insert 'squareToInsert'
to retGame[rowCounter][colCounter], it's done dynamically, but I don't know
how to do that *)
in
createMines (rowCounter, colCounter+1, retGame)
end
in
createMines (0,0,[])
end
я мог вставить какой-либо площади, он решил динамически, и здесь я дал пример только скрывала Mine, так что вы можете мне помочь .. HELP ..?
Я решил это, указав аргумент «temp: Square list», добавив, используя тот факт, что списки добавляются с помощью @ и retGame и squareToInsert, используя «[[]]», как вы уже упоминали – mooly