[Haskell-cafe] trees and pointers

Sergey Mironov ierton at gmail.com
Thu Jul 15 05:28:01 EDT 2010

2010/7/15 Serguey Zefirov <sergueyz at gmail.com>:
> 2010/7/14 Sergey Mironov <ierton at gmail.com>:
>> Hi cafe! I have a question of C-to-Haskell type:)
>> Imagine web application wich allows users to browse some shared
>> filesystem located at the server.
>> Application stores every users's position within that filesystem
>> (current directory or file).
>> In C this can be implemented with the help of following data types:
>> Any ideas?
> Use IORef. ;)
> PS
> MVar is better, actually.

Somehow I forgot about them:) Code will turn into something like

data TreeNodeData = File | Dir (IORef TreeNode)
data TreeNode = TreeNode {
        next :: Maybe (IORef TreeNode),
        prev :: Maybe (IORef TreeNode),
        up :: Maybe (IORef TreeNode), -- missed it in original C example
        payload :: TreeNodeData

data User = User {
	position :: IORef TreeNode,
	-- ...

It really should work! (we don't take multithreading issues into
account for now)
Slightly annoying thing is that 1-to-1 mapping from C to Haskell also
forces programmer to perform C-like low-level pointer linking.


More information about the Haskell-Cafe mailing list