用haskell的概念解釋範疇論。翻譯自 wikibook : http://en.wikibooks.org/wiki/Haskell/Category_theory
Haskell與範疇論
本文對範疇論做一個簡單的介紹,最終目的是為了將它應用到Haskell語言。為了達到這個目的,我們一邊介紹數學上的定義,一邊給出對應的Haskell代碼。我們不追求這個對應有多精確,只期望讀者在讀完以後,能對範疇論的基本概念及其跟Haskell之間的聯繫有一個直觀的感受。
| 本質上講,範疇由三部分組成:
|
愛因斯坦 Albert Einstein: 如果你沒辦法簡單說明,代表你了解得不夠透徹。 If you can't explain it simply, you don't understand it well enough.
| 本質上講,範疇由三部分組成:
|
using System; public class Wine { public decimal Price; public int Year; public Wine (decimal price) { Price = price; } public Wine (decimal price, int year) : this (price) { Year = year; } }和以下這段code是等價的
using System; public class Wine { public decimal Price; public int Year; public Wine (decimal price) { Price = price; } public Wine (decimal price, int year) { Wine(price); Year = year; } }一樣都會改Price的值 上網找了一下 發現原來還有很多方便的語法糖 以下節錄幾個常用的
class MyClass { public delegate void DoSomething(int a); //定義方法委託 private void DoIt(int a) { Console.WriteLine(a); } private void HowtoDo(DoSomething doMethod,int a) { doMethod(a); } public static void Main(string[] args) { MyClass mc = new MyClass(); //調用定義的方法委託 mc.HowtoDo(new DoSomething(mc.DoIt), 10); int x = 10; //使用匿名委託 mc.HowtoDo(delegate(int a){ Console.WriteLine(a + x); },10); //使用lamda表達式 mc.HowtoDo(a=>Console.WriteLine(a+x),10); Console.ReadLine(); } }
def fab(N): n, a, b = 0, 0, 1 while n < N: print b a, b = b, a + b n = n + 1執行 fab(5),我們可以得到如下輸出:
hostX.codeanyhost.com:XXXXX
cat ../.ssh/id_rsa
cat ../.ssh/id_rsa.pub