Haskell: Speicheradresse einer Liste abrufen


asp5

Gibt es eine Möglichkeit, die Adresse des Datenelements (z. B. eines Listenelements) in Haskell abzurufen?

combineLists :: [a] -> [a] -> [a]

combineLists [] y = y
combineLists (x:xs) y = x : combineLists xs y

*Main> let x=[1,23, 12, 45]
*Main> x
[1,23,12,45]
*Main> let y =[90, 56, 78]
*Main> y
[90,56,78]
*Main> let z = combineLists x y
*Main> z
[1,23,12,45,90,56,78]

Jetzt würde zvollständig durch Kopieren von Elementen aus x und y (interne Haskell-Darstellung) oder konstruiert

wäre z so etwas wie: z = [[Kopie aller Elemente von x] y]

Ich wollte sehen, ob & y == & z [4] (z [4] = 90).

Es gibt auch eine Möglichkeit, die interne Darstellung mit etwas ähnlichem wie ctypes in Python zu sichern.

Vielen Dank.

Alexey Romanov

Sie können StableNameoder verwenden reallyUnsafePointerEquality#(notieren Sie sich den Namen und verwenden Sie ihn nicht in echten Programmen; Sie benötigen auch die MagicHash- Erweiterung, um ihn aufzurufen), um zu überprüfen, ob sich zwei Ausdrücke auf dasselbe Objekt beziehen. Siehe Welche Vorteile haben StableNames gegenüber realUnsafePtrEquality # und umgekehrt? für die Unterschiede.

Verwandte Artikel


Byte von Speicheradresse abrufen?

C0d1ng Ich lerne immer noch C ++ und habe Stunden damit verbracht, einen Weg zu finden, um ein Byte an einer bestimmten Speicheradresse zu speichern. In meinem Fall sind ALLE (fast alle) Speicheradressen nicht dynamisch - also Adressen, auf die z Beispielvaria

Rest einer Liste abrufen

Pablo Pardo Ich habe einen Python-Code, der alle Zeilen aus einer Tabelle abruft und in Blöcken von 1000 in eine andere einfügt. allRows = db.getAllRows() #12.345 elements package = [] for idx, pr in enumerate(allRows): package.append(pr) if (idx + 1)

Triangularisieren einer Liste in Haskell

Peter Kagey: Ich bin daran interessiert, eine effiziente Haskell-Funktion zu schreiben triangularize :: [a] -> [[a]], die eine (möglicherweise unendliche) Liste in eine Liste von Listen "trianguliert". Zum Beispiel triangularize [1..19]sollte zurückkehren [[1,

Aufbau einer Liste in Haskell

Tag Ich möchte eine Liste zufälliger Ganzzahlen ohne Duplikate erstellen. Als ersten Schritt habe ich eine Funktion, die eine Liste von n Zufallsstichproben erstellt. Wie schreibt man dies auf eine eher Haskell-idiomatische Weise, bei der keine leere Liste übe

Übergabe einer Speicheradresse in Rust

Dominika Kubicz Ich habe eine Funktion, bei der ich eine Speicheradresse übergeben muss. Ich habe nur festgestellt, dass wir eine Speicheradresse mit println! ("{: P}", Nummer) ausdrucken können. Wie kann ich auf die Speicheradresse zugreifen und sie in einer