kean与f# (最后更新: 20080724) - 精华帖集合
www.dimcax.com
kean与f# (最后更新: 20080724)
原文作者:
文档格式: word文档 (*.doc) | 7zip (*.7z)
文章数量: 21
全部文章下载地址:
独立压缩包及目录:
关于 f# 语言:
f# 是一门函数式编程语言! (functional programming language)
官方网站:
目前已经进入产品化阶段, 第一个ctp版已发布
维护者:
发布方式: visual studio 2008 扩展
什么是函数式编程?
简单的定义是: 在函数式语言中, 函数是第一等公民.
函数式语言其实比你想象中的要多得多, 只不过它们长期处在计算机技术发展的边缘, 所以好多都是不为人知.
如: lisp, scheme,perl, ml, miranda, haskell, xslt, ruby, erlang, ocaml 等等.
f# 有什么用?
形象的比喻: 用c#吸引c/c++程序员, 用vb.net替换vb6, 用j#拉拢java程序员, 那么f#就是招安那些处在边缘的函数式小语种, 这也就是为什么kean会说"f#是最适合autocad开发的编程语言"的原因!
是autodesk的专家, 他从2007年10月31日起连续发表关于使用 f# 开发 autocad 的文章, 但是由于我们平常所见到的编程技术多半是类 c 技术, 再加上 f# 时间较短, 所以kean所研究的技术显然是有些超前了, 但是他对这门语言的崇拜显然已经达到了宗教般的高度, 这使我坚信他所追求的一定很有价值!
由于一些原因, kean的博客不容易访问, 因此我会不间断的摘录并坚持翻译, 但仅限于f#有关的文章.
有趣的是: 在 google 中搜索 "f#" 会返回近百万个匹配的结果, 而在百度中搜索就只会返回0个.
[ ]
非常感谢colder兄的辛勤劳动!!!!!!!
原帖由 ahlzl 于 2008-2-29 09:31 pm 发表
非常感谢colder兄的辛勤劳动!
!!!!!!
不谢不谢, " border="0"> 翻译文章治好了我的感冒!
论坛程序对firefox的支持有待提高哦, 编辑贴子时居然不显示内容.
国产软件任重道远...
and: 我上传附件大小限制在204.8 kb, 可以通过发贴数量提高限制么?
// 这是才鸟老大在 dotnetarx 帮助文件中, 第一页 geting started 的第一段 c# 示例line line = new line(new point3d(0.0, 0.0, 0.0), new point3d(3333.0, 3333.0, 0.0));database db = application.documentmanager.mdiactivedocument.database;using (transaction trans = db.transactionmanager.starttransaction()){ blocktable bt = (blocktable)trans.getobject(db.blocktableid, openmode.forread, false); blocktablerecord btr = (blocktablerecord)trans.getobject(bt[blocktablerecord.modelspace], openmode.forwrite, false); btr.appendentity(line); trans.addnewlycreateddbobject(line, true); trans.commit();}
// 这是改成的f#代码, 对比一下还是蛮像的嘛~_~// 使用 f# 缩略语法#light // 声明独有的命令空间和类module fstest.drawline // 指定包含文件夹#i @"d:\autocad 2008" // 引用托管#r "acdbmgd.dll"#r "acmgd.dll" open autodesk.autocad.runtimeopen autodesk.autocad.applicationservicesopen autodesk.autocad.databaseservicesopen autodesk.autocad.geometry // 声明命令[<commandmethod("drawline")>]let drawline () = let line = new line(new point3d(0.0, 0.0, 0.0), new point3d(3333.0, 3333.0, 0.0)) let db = application.documentmanager.mdiactivedocument.database use trans = db.transactionmanager.starttransaction() let bt = trans.getobject(db.blocktableid, openmode.forread):?> blocktable let btr = trans.getobject(bt.[blocktablerecord.modelspace], openmode.forwrite):?> blocktablerecord btr.appendentity(line) |> ignore trans.addnewlycreateddbobject(line, true) trans.commit()
[ ]
module fstest.drawline
复制代码
这一行代码,感觉没有用。
let drawline () =
复制代码
drawline换成别的字母也行。
很好,很强大 。。支持一个
建议加精
最后更新: 2008-03-05 autocad 2009新api
原帖由 colder 于 2008-3-10 04:09 pm 发表 最后更新: 2008-03-05 autocad 2009新api
这个已翻译了,看来以后得互相通气一下,不然重复劳动
c#最适合开发autocad,因为它拥有vb容易的特点,却具有vc++的强大功能。
原帖由 admin 于 2008-3-10 04:46 pm 发表 这个已翻译了,看来以后得互相通气一下,不然重复劳动
那我以后就只专门翻译f#的, 估计不会重复了.
原帖由 cloudlove 于 2008-3-4 10:55 am 发表 建议加精
已经加精了
c#最适合开发autocad,因为它拥有vb容易的特点,却具有vc++的强大功能。