Osoba na Reddit przyniósł ten kod do mojej uwagi:(emulowane) Makra w Haskell?
main = do
let ns = [print 1, print 2, print 3]
sequence_ ns
sequence_ $ reverse ns
sequence_ $ tail ns ++ [head ns]
head ns
Co się tutaj dzieje to mamy szereg operacji, które możemy robić rzeczy ze jak rewersu lub uzyskać ogonem lub głowy.
Awesome.
Co chcę zrobić, to dostać się do poszczególnych elementów i zmienić je na dobre. Na przykład, chcę być w stanie zrobić coś takiego:
ns !! 0
i dostać coś takiego [drukuj, 1], a następnie zmień ostatni element, powiedzmy, 3,14 tak, że funkcja będzie drukować 3.14.
Czy to możliwe w Haskell, czy powinienem po prostu wrócić do LISP-a?
AN WAŻNA EDYCJA: W pewnym stopniu popełniłem błąd. Rozumiem, że będę musiał utworzyć nową listę. Czy można uzyskać argumenty funkcji, która jest częścią listy? To, czego chcę, to możliwość komponowania funkcji z ich identyfikatorów/argumentów, a także możliwość podziału funkcji na identyfikator/argument, zanim zostanie ona oceniona.
btw: czego tak naprawdę potrzebujesz? – yairchu