回答
是的。看看Foreign.Ptr或Data.IORef
我懷疑這不是你所要求的。由於Haskell大部分沒有狀態,這意味着指針不適合語言設計。在函數之外有一個指向內存的指針意味着函數不再是純粹的,只允許指向當前函數內的值的指針是沒有用處的。
我懷疑他正在尋找一種方式來傳遞大數據結構而不創建副本,基於錯誤的假設,即將值傳遞給函數會創建一個副本,就像在C++中按值執行時一樣。 – sepp2k 2010-03-14 19:21:47
@ sepp2k或用於與內存映射設備交談。 – 2011-12-16 14:52:27
Haskell通過外部函數接口擴展提供指針。看看,例如,Foreign.Storable。
指針用於與C代碼進行互操作。不是每天Haskell編程。
如果您正在尋找引用 - 指針到要發生變異的對象 - 有STRef和IORef,它提供許多相同用途的指針。然而,你應該很少 - 如果有的話 - 需要參考。
如果您只是希望避免複製較大的值,如sepp2k所假設的,那麼您不需要做任何事情:在大多數實現中,所有非平凡值都分別分配在一個堆上,並通過機器級地址相互引用即指針)。但是,再一次,你不需要做任何事情,它會照顧你。
要回答關於如何傳遞值的問題,可以採用任何方式傳遞它們:因爲無論如何不能改變值,它不會影響代碼的含義(只要嚴格尊重);通常這可以按照需要進行,除非你是通過例如編譯器可以看到的Int值已經被評估...
傳遞需求就像傳遞引用一樣,除了任何給定的引用都可以引用實際評估值(不能更改) ,或者爲尚未評估的值「thunk」。維基百科有more。
這是Haskell的主要優點之一:在大多數情況下,您必須做的很少以確保效率。 – avpx 2010-03-30 00:04:19
- 1. Haskell有記錄成員的指針/引用嗎?
- 2. Haskell有foldlM'嗎?
- 3. 如何在Haskell中獲取指針值?
- 4. Haskell有變量嗎?
- 5. 幀指針省略?有風險嗎?
- 6. 矢量指針位置有保證嗎?
- 7. 指針訪問有問題嗎?
- 8. 將指針指向無匹配NULL的指針嗎?
- 9. 指針指向LSB或MSB嗎?
- 10. 指針指針
- 11. 指針指針
- 12. 指針指針
- 13. Text有Haskell readMaybe函數嗎?
- 14. 在C#中有像C++一樣的指針嗎?它安全嗎?
- 15. 我應該使用std :: shared指針傳遞一個指針嗎?
- 16. 指針可以轉換爲空指針嗎?
- 17. const和普通指針的指針可以混合使用嗎?
- 18. 指針所有者
- 19. 指向指針的指針與C中指針的地址有什麼區別?
- 20. 指針的指針
- 21. 指針的指針
- 22. F指針指針#
- 23. 我不能從指針指向派生類的指針和指向基類的指針嗎?
- 24. 指針指向指針
- 25. 共享指針:指針的指針
- 26. 指針和指針數組指針
- 27. 指針內指針的指針
- 28. 指針vs指針指針C
- 29. 指針指針(* argv [])的指針運算?
- 30. 指針的指針的指針
另請參見http://stackoverflow.com/questions/2386210/how-to-get-a-pointer-value-in-haskell – 2011-04-18 23:01:32