代码改变世界

话说 type 之 record 记录的使用技巧 - F# -

2012-02-09 23:46 by 软件猫, 470 阅读, 2 推荐, 收藏, 编辑
摘要:看过 Effective C# 的应该对“第1章条款7:将值类型尽可能实现为具有常量性和原子性的类型”有所感悟。实现一个具有常量性的不可变类型,对于并行程序来说有着说不完的优点。这就是为什么 F# 在 class 和 struct 这两个的基础上还给我们提供一个叫 record 记录的类型的原因,它是不可变类型,并且你可以非常方便的创建它,而不需要像 C# 一样写一堆代码。比如,创建一个名为 Point 的不可变类型来标记一个点的坐标,你像下面这样写就可以了type Point = { x : float; y : float}然后,创建一个记录的实例也很方便let p = { x = 20. 阅读全文

目前让 F# 支持 Silverlight 5 的解决方案(包括 lazy 不可用)

2012-02-07 19:24 by 软件猫, 366 阅读, 2 推荐, 收藏, 编辑
摘要:最近想尝试 Silverlight 5 用 F# 编写 Lib 的同学应该发现有很多奇怪的错误。微软 F# 项目组的同学说其实目前 F# 已经能够很好的支持 SL5,只是这个包他们还没官方正式发布罢了。不过不要紧,有办法~。~Step1先下载 InstallFSharp.msi。这是 F# 2.0 包,目前是社区技术预览版,不过不管怎么说我们得先用起来再说。有了第一步,创建的 SL5 版本的 F# Lib 就能用了。但是这时会遇到一些奇怪的问题,比如居然不支持 lazy。于是我给 F# 项目组提交了这个 bug。幸运的是第二天就得到答复了,是一个英国的大牛回答了这个问题。http://soci 阅读全文

话说 type 之 let 绑定与 val 显式字段 - F# -

2012-02-05 21:52 by 软件猫, 481 阅读, 1 推荐, 收藏, 编辑
摘要:今天和大家玩个找不同的游戏,先看看下面两段代码有什么不同,嘿嘿~。~type A() = let left = 0 member x.Left = lefttype B = val private left : int new () = { left = 0 } member x.Left = x.left(有人要说了,类名不同,嘿嘿~。~)额 ><!其实我是想让大家注意 member x.Left = left和 member x.Left = x.left,看出了没?类B多了个 x.对于类B来说,如果去掉这个 x. 会报下面这个错误。The val... 阅读全文

Silverlight OOB 获取桌面可视尺寸 - F# - PInvoke -

2012-02-04 17:53 by 软件猫, 711 阅读, 2 推荐, 收藏, 编辑
摘要:潜水潜太久,都快被淹死了。终于鼓起勇气,挣扎着浮出水面。我不知道透一口气后还能坚持多久,总之先给大家一个还凑活的文章吧。在说正题之前,先说明一下,我会尽量使用 F# 语言来表述相关的技术,如果对 F# 不熟悉的同学,可以参考MSDNhttp://msdn.microsoft.com/zh-cn/library/dd233154.aspx目前Silverlight OOB环境下虽然可以随意的设置窗体的位置,但是微软似乎还没有提供获取桌面可视范围的参数(屏幕分辨率减去任务栏占用的尺寸后剩下的那部分)。微软不支持,不要紧,我们可以 OOB|> Require elevated strust w 阅读全文