<div dir="auto">I have to say that a question about types from singletons package. I am sorry that didn't say it before.</div><div class="gmail_extra"><br><div class="gmail_quote">31 дек. 2017 г. 4:05 PM пользователь "Ramin Honary" <<a href="mailto:ramin.honary@gmail.com">ramin.honary@gmail.com</a>> написал:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I think the closest thing I can think of that describes a "thingToList" kind of thing you are talking about would be the "Foldable" and "Traversable" class:<div><br></div><div><a href="https://hackage.haskell.org/package/base-4.10.1.0/docs/Data-Foldable.html" target="_blank">https://hackage.haskell.org/<wbr>package/base-4.10.1.0/docs/<wbr>Data-Foldable.html</a><br></div><div><a href="https://hackage.haskell.org/package/base-4.10.1.0/docs/Data-Traversable.html" target="_blank">https://hackage.haskell.org/<wbr>package/base-4.10.1.0/docs/<wbr>Data-Traversable.html</a><br></div><div><br></div><div>However it is not exactly as you described, there is no direct conversion of a "Thing" data structure to an actual list data structure.</div><div><br></div><div>The problem with converting data structures like Trees into lists structures is that this can be inefficient. Instead, think of the reason you want to have a list object: because you want to perform scan through the list to find an element, or you want to perform a fold, yes?</div><div><br></div><div>So instead of converting to a list and then applying a fold or map function, it is much better to pass a mapping function to a higher-order function like "mapM," or "sequence," or pass a folding function a higher-order function like "foldM", and allow these higher-order functions scan through the data structure without converting it to a list first.</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Dec 31, 2017 at 4:08 AM, Dmitry Olshansky <span dir="ltr"><<a href="mailto:olshanskydr@gmail.com" target="_blank">olshanskydr@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello cafe,<div><br></div><div>Does a function like `singToList` exist somewhere:</div><div><div><br></div><div>singToList :: Sing (xs :: [k]) -> [SomeSing k]</div><div>singToList = \case</div><div>  SNil -> []</div><div>  SCons x xs -> SomeSing x : singToList xs</div></div><div><br></div><div>?</div></div>
<br>______________________________<wbr>_________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bi<wbr>n/mailman/listinfo/haskell-caf<wbr>e</a><br>
Only members subscribed via the mailman list are allowed to post.<br></blockquote></div><br></div>
</blockquote></div></div>