Skip to content
Browse files

Updated web page.

  • Loading branch information...
1 parent 520148f commit 3d28eb6f3ca2e94086420943654516e2489c6731 Gregory Crosswhite committed Jun 7, 2009
Showing with 51 additions and 61 deletions.
  1. +51 −61 index.html
View
112 index.html
@@ -52,71 +52,61 @@
Haskell values that cannot be evaluated immediately.
</div>
- <p>Procrastinating variables ('PVar's) are meant to be used in cases where
-you want to give someone a value that you do not have available yet,
-but will definitely have ready by the time that they need to use it.
-
-'PVar's have the advantage that you do not make the user of your value
-execute some kind of unwrapping routine in order to get access to the
-value within. For example, this is useful when you are constructing
-closures that you want to go ahead and construct now even though some
-of the values that they contain are not available yet.
-
-'PVar's are implemented with a lazy thunk that reads from
-an IORef; before the IORef is written to, it contains "bottom" (an
-exception with a descriptive error message) so that an error is raised
-in the user code if the variable is accidently accessed before the
-value is ready.
-
-NOTE: 'PVar's are modeled closely on the 'IVar' implementation in the
- ivar-simple package. The major difference is that if you try
- to read an IVar before it has been given a value, it blocks
- until the value is available, whereas reading from a 'PVar'
- before it is ready raises an exception. The reason behind the
- different symantics for 'PVar' is because if the user accidently
- accesses the value too early, you want there to be a lot of
- noise to let him or her know about it, rather than merely
- blocking the thread indefinitely and causing them to wonder
- what went wrong.</p><h2>Install</h2>
-<p>runhaskell Setup.hs configure
-runhaskell Setup.hs build
-runhaskell Setup.hs test
-runhaskell Setup.hs install
-
+ <p>Procrastinating variables ('PVar's) are meant to be used in cases where
+you want to give someone a value that you do not have available yet,
+but will definitely have ready by the time that they need to use it.</p>
+
+ <p>'PVar's have the advantage that you do not make the user of your value
+execute some kind of unwrapping routine in order to get access to the
+value within. For example, this is useful when you are constructing
+closures that you want to go ahead and construct now even though some
+of the values that they contain are not available yet.</p>
+
+ <p>'PVar's are implemented with a lazy thunk that reads from
+an IORef; before the IORef is written to, it contains "bottom" (an
+exception with a descriptive error message) so that an error is raised
+in the user code if the variable is accidently accessed before the
+value is ready. </p>
+
+ <p>
+<b>NOTE:</b> 'PVar's are modeled closely on the 'IVar' implementation in the
+ ivar-simple package. The major difference is that if you try
+ to read an IVar before it has been given a value, it blocks
+ until the value is available, whereas reading from a 'PVar'
+ before it is ready raises an exception. The reason behind the
+ different symantics for 'PVar' is because if the user accidently
+ accesses the value too early, you want there to be a lot of
+ noise to let him or her know about it, rather than merely
+ blocking the thread indefinitely and causing them to wonder
+ what went wrong.</p>
+
+ <h2>Install</h2>
+<blockquote>
+runhaskell Setup.hs configure <br>
+runhaskell Setup.hs build <br>
+runhaskell Setup.hs test <br>
+runhaskell Setup.hs install
+</blockquote>
</p>
<h2>License</h2>
-<p>Copyright (c) 2009 Gregory M. Crosswhite
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. Neither the name of the author nor the names of his contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-</p>
+ <p>Copyright (c) 2009 Gregory M. Crosswhite<br>
+ All rights reserved.</p>
+
+ <p>Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:</p>
+
+ <ul>
+ <li>Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.</li>
+
+ <li>Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.</li>
+
+ <li>Neither the name of the author nor the names of his contributors may be used to endorse or promote products derived from this software without specific prior written permission.</li>
+ </ul>
+
+ <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
<h2>Authors</h2>
-<p>Gregory Crosswhite <gcross@phys.washington.edu>
+<p><a href="mailto:Gregory M. Crosswhite <gcross@phys.washington.edu>">Gregory M. Crosswhite</a><br/><br/> </p>
<h2>Contact</h2>
-<br/> </p>
+<p><a href="mailto:Gregory M. Crosswhite <gcross@phys.washington.edu>">Gregory M. Crosswhite</a><br/> </p>
<h2>Download</h2>

0 comments on commit 3d28eb6

Please sign in to comment.
Something went wrong with that request. Please try again.