Люди на Reddit принес этот код моего внимания:(эмулируется) Макросы в Haskell?
main = do
let ns = [print 1, print 2, print 3]
sequence_ ns
sequence_ $ reverse ns
sequence_ $ tail ns ++ [head ns]
head ns
Что происходит здесь мы имеем массив операций, которые мы можем сделать материал с, как реверс или получить его хвост или голова.
Awesome.
Что я хочу сделать, это разобраться в отдельных элементах и изменить их навсегда. Например, я хочу, чтобы иметь возможность сделать что-то вроде этого:
ns !! 0
и получить что-то вроде [печать, 1], а затем изменить последний элемент, скажем, 3,14, так что функция будет печатать 3.14.
Возможно ли это в Haskell или я должен просто вернуться к LISP?
ВАЖНЫЙ РЕДАКТОР: Я как бы ошибался. Я понимаю, что мне нужно будет создать новый список. Можно ли получить аргументы функции, которая является частью списка? То, что я хочу, - это возможность составлять функции из своих идентификаторов/аргументов, а также иметь возможность разбивать функцию на идентификатор/аргумент перед его оценкой.
кстати: для чего вам это действительно нужно? – yairchu