<span class="Apple-style-span" style="font-family: -webkit-sans-serif; font-size: 16px; ">IDynamic is  variant of Data.Dynamic that can be indexed, serialized., stored, transmitted trough communications etc. So it can be used in abstract data containers, persistence, communications etc.</span><div>
<font class="Apple-style-span" face="-webkit-sans-serif" size="4"><span class="Apple-style-span" style="font-size: 16px;"><br></span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="4"><span class="Apple-style-span" style="font-size: 16px;"><a href="http://hackage.haskell.org/package/IDynamic">http://hackage.haskell.org/package/IDynamic</a></span></font></div>
<div><font class="Apple-style-span" face="-webkit-sans-serif" size="4"><span class="Apple-style-span" style="font-size: 16px;"><br></span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="4"><span class="Apple-style-span" style="font-size: 16px;"><br>
I Just uploaded it, so the documentation has not been created by Hackage. However I uincluded an example in the pachage.</span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="4"><span class="Apple-style-span" style="font-size: 16px;"><br>
</span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="4"><span class="Apple-style-span" style="font-size: 16px;"><div>{-# OPTIONS -XTypeSynonymInstances #-}</div><div>module Main where</div>
<div>import Data.IResource</div><div>import Data.IDynamic</div><div>import Data.Typeable</div><div><br></div><div>instance IResource Int where     </div><div>               keyResource x=  &quot;I&quot;</div><div>               serialize = show</div>
<div>               deserialize = read</div><div>               defPath _= &quot;saved/&quot;</div><div><br></div><div>instance IResource String where</div><div>               keyResource x=  take 5 x</div><div>               serialize = show</div>
<div>               deserialize = read</div><div>               defPath _= &quot;saved/&quot;</div><div>               </div><div><br></div><div>main= do</div><div>              putStrLn &quot;see the code to know the meaning of he results&quot;</div>
<div>              registerType :: IO Int           -- register both datatypes (Int, and String)</div><div>              registerType :: IO String</div><div><br></div><div>              let x= 1 :: Int</div><div>              let list= [IDynamic x, IDynamic &quot;hello, how are you&quot;]     --typical Dynamic usage</div>
<div>              let assoc= zip (map keyResource list) list</div><div><br></div><div>              print $ lookup (keyResource (5 ::Int)) assoc       -- lookup a IDynamic object from a container and show it</div><div>              </div>
<div>              mapM writeResource list</div><div>              mds ←   readResource $  IDynamic  &quot;hello&quot;       -- save both objects</div><div>              case mds of</div><div>                Nothing →  error &quot;must have been Just!&quot;           --why?</div>
<div>                Just ds →  do</div><div>                             putStrLn $ serialize ds                       -- serialize the dynamic object and print it</div><div>                             let str= fromIDyn  ds ::   String           -- casting</div>
<div>                             putStrLn str                                      -- print the string read</div><div>                             </div><div>                             let y=  fromIDyn  ds ::   Int   -- casting error</div>
<div>                             print y</div><div><br></div></span></font></div>