<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<oembed>
  <author_name>lethevert</author_name>
  <author_url>https://blog.hatena.ne.jp/lethevert/</author_url>
  <blog_title>lethevert is a programmer</blog_title>
  <blog_url>https://lethevert.hatenadiary.org/</blog_url>
  <categories>
  </categories>
  <description>いろいろ実験して、言語リファレンスを読んだ結果、一意性について理解が深まりました。 とりあえず、関数型と一意性の間には、通常の型のように共変反変の関係があります。 ::R a b :== .(a -&gt; b) createR :: *Char -&gt; *(R Int *Char) createR c = (\i = c) f :: u:(R Int *Char) -&gt; u:(R *Int Char) f r = r Start = f (createR 'a') というプログラムは有効なプログラムです。関数fのところで、共変反変の関係が見て取れます。 この結果、抽象型の場合には、共変反変の判断を付…</description>
  <height>190</height>
  <html>&lt;iframe src=&quot;https://hatenablog-parts.com/embed?url=https%3A%2F%2Flethevert.hatenadiary.org%2Fentry%2F20070604%2Fp2&quot; title=&quot;Concurrent Clean: 一意性と抽象型と共変反変 - lethevert is a programmer&quot; class=&quot;embed-card embed-blogcard&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; style=&quot;display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;&quot;&gt;&lt;/iframe&gt;</html>
  <image_url></image_url>
  <provider_name>Hatena Blog</provider_name>
  <provider_url>https://hatena.blog</provider_url>
  <published>2007-06-04 00:00:03</published>
  <title>Concurrent Clean: 一意性と抽象型と共変反変</title>
  <type>rich</type>
  <url>https://lethevert.hatenadiary.org/entry/20070604/p2</url>
  <version>1.0</version>
  <width>100%</width>
</oembed>
