projects
/
ghc-hetmet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
8bf9fcc
)
Update the docs on how you bind unlifted types in let/where clauses
author
Ian Lynagh
<igloo@earth.li>
Fri, 5 Jun 2009 12:29:29 +0000
(12:29 +0000)
committer
Ian Lynagh
<igloo@earth.li>
Fri, 5 Jun 2009 12:29:29 +0000
(12:29 +0000)
docs/users_guide/glasgow_exts.xml
patch
|
blob
|
history
diff --git
a/docs/users_guide/glasgow_exts.xml
b/docs/users_guide/glasgow_exts.xml
index
a08ace9
..
e8e721c
100644
(file)
--- a/
docs/users_guide/glasgow_exts.xml
+++ b/
docs/users_guide/glasgow_exts.xml
@@
-210,22
+210,20
@@
in a <emphasis>top-level</emphasis> binding.
in a <emphasis>recursive</emphasis> binding.
</para></listitem>
<listitem><para> You may bind unboxed variables in a (non-recursive,
in a <emphasis>recursive</emphasis> binding.
</para></listitem>
<listitem><para> You may bind unboxed variables in a (non-recursive,
-non-top-level) pattern binding, but any such variable causes the entire
-pattern-match
-to become strict. For example:
+non-top-level) pattern binding, but you must make any such pattern-match
+strict. For example, rather than:
<programlisting>
data Foo = Foo Int Int#
f x = let (Foo a b, w) = ..rhs.. in ..body..
</programlisting>
<programlisting>
data Foo = Foo Int Int#
f x = let (Foo a b, w) = ..rhs.. in ..body..
</programlisting>
-Since <literal>b</literal> has type <literal>Int#</literal>, the entire pattern
-match
-is strict, and the program behaves as if you had written
+you must write:
<programlisting>
data Foo = Foo Int Int#
<programlisting>
data Foo = Foo Int Int#
- f x = case ..rhs.. of { (Foo a b, w) -> ..body.. }
+ f x = let !(Foo a b, w) = ..rhs.. in ..body..
</programlisting>
</programlisting>
+since <literal>b</literal> has type <literal>Int#</literal>.
</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</itemizedlist>