Fsharp的交互开发环境使得我们在了解DotNet平台时能够快速的获得需要的反馈。

反馈在任何技艺的磨练过程中必不可少,我认为也是最重要的环节之一。在“一万小时天才理论”中,著名的髓鞘质就是在快速有效的反馈过程中产生的。虽然在不确定哪些训练是最有效的训练前,大量的练习不见得有多大好处,相对结果的收集对于自己编程技艺的获得却必定有极大的帮助。

Visual Studio 2013中内嵌了对 FSharp的支持。我最常用的命令有:

  1. 选中指定代码后[Alt+Enter] ==>执行代码
  2. 在一行的末尾[Ctrl+']==>执行此行代码
  3. 在交互界面中输入完代码后,打两个分号";;",再按[shift + Enter] ==> 执行代码

下面是一个简单的小例子

module ExploreDotNet

System.IO.Directory.SetCurrentDirectory(__SOURCE_DIRECTORY__)

//System.IO.Directory.GetCurrentDirectory()

open System

[<CLIMutable>]
type DateSerTest =
{
Local:DateTime;
Utc:DateTime
} let ser = new System.Xml.Serialization.XmlSerializer(typeof<DateSerTest>) let d = {
Local = DateTime.SpecifyKind(new DateTime(, , ), DateTimeKind.Local)
Utc = DateTime.SpecifyKind(new DateTime(, , ), DateTimeKind.Utc)
} let testSerialization(dt:DateSerTest) =
let filename = "serialization.xml"
use ms = new IO.MemoryStream()
ser.Serialize(ms, o = dt)
Text.Encoding.Default.GetString(ms.GetBuffer()) |> Console.WriteLine
ms.Close() testSerialization d

结果:

<?xml version="1.0"?>
<DateSerTest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Local>2014-10-01T00:00:00+08:00</Local>
<Utc>2014-10-01T00:00:00Z</Utc>
</DateSerTest>

参考了www.fsharpforfunandprofit.com的代码。有意思的是我这里使用的是MemoryStream。在敲入代码的过程中对Stream,Serialization的概念虽然一开始有点模糊了,对于一些函数的返会值不是很明确;这时只要选中那些对象[Alt+Enter],结果就出现了。

使用Fsharp 探索 Dotnet 平台的更多相关文章

  1. 使用FSharp 探索Dotnet图像处理功能1--反色变化

    坚持写博客是最近的目标.加油. 业余学习fsharp以来一直觉得这才是Dotnet开发,或者说所有开发者应该拥有的语言.配合Visual Studio的代码提示,即时执行窗口.开发程序有着极大的乐趣. ...

  2. 使用FSharp 探索Dotnet图像处理功能2--均衡灰度

    重新捡起大学里的图像处理,好像之前什么都没学到,但是我为什么还留着这本书呢?嘿嘿. 看到均衡灰度处理,上来就是积分,概率分布的公式,头微微的有点疼.网上看了点介绍,隔天再拿起书本,总算有了点眉目.简而 ...

  3. Jenkins在Windows系统dotnet平台持续集成

            之前写过一篇文章是在CentOS上构建.net自动化编译环境, 今天这篇是针对于Windows平台的环境.        Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平 ...

  4. 探索 dotnet core 为何在 Windows7 系统需要补丁的原因

    在一些 Windows 7 系统上,根据 dotnet 官方文档,需要安装上 KB2533623 补丁,才能运行 dotnet core 或 .NET 5 等应用.尽管非所有的设备都需要安装此,但这也 ...

  5. dotNet平台模板列中的单选无效的解决方案

    最近在grid里添加一个单选列,最开始直接创建一个模板列,然后在模板列里放一个radiobutton.并指定其GroupName.这是radiabutton最常用的方法.但是在Grid里,这样却毫无效 ...

  6. 通过Fsharp探索Enterprise Library Exception

    Exception怎么生成是一回事,怎么展示又是还有一回事了. Exception Block主要关注的点在于Exception信息的展示.Exception不同于一般的log信息,是系统设计者未考虑 ...

  7. 探索ABP的EventHub解决方案

    在上一章中,我们构建了一个简单的全栈 Web 应用程序,我们已经看到了使用 ABP 框架开发应用的典型流程,在接下来,我们将使用 ABP 框架创建更高级的应用程序. 给出具有现实世界复杂性的例子并不容 ...

  8. .NET平台下开源框架

    一.AOP框架Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面(asp ...

  9. CLR探索应用程序域世界(上):Windbg SOS剖析揭示域世界

    在CLR的世界中,有一系列的令人Amazing的技术和架构.其中,CLR对应用程序在内存中内存分配,执行模型,程序之间的交互等一系列的技术,值得每一个致力于DotNet平台的技术人员深究. 编程人员在 ...

随机推荐

  1. AutoMapper学习笔记

    进入公司后学习到的东西,之前记录在github上 现在搬运过来 AutoMapperDemo 需要安装两个包 AutoMapper AutoMapper.Extensions.Microsoft.De ...

  2. 利用httpclient和mysql模拟搜索引擎

    数据抓取模块 package crowling1; import java.sql.CallableStatement; import java.sql.Connection; import java ...

  3. javaScript笔记01

    所谓勇气就是明知前方的路途充满了荆棘险阻,但还是义无反顾的的走下去. 1 Javasrcipt定义的三种方式 ·1 head中的script脚本 <!DOCTYPE html> <h ...

  4. 【总结整理】关于Json的解析,校验和验证

    var jasondata='{"staff": [{"name":"红旗","age":90}, {"nam ...

  5. Express的日志模块morgan

    morgan 是nodejs的一个日志模块,由 express 团队维护. 这里通过示例简要介绍morgan模块在express中的应用,大部分示例直接来自于.morgan的文档:https://gi ...

  6. Luogu 3312 [SDOI2014]数表

    在这一篇里把所有的套路写全方便自己之后复习. 首先是一个小学生数学:$a$整除$b$ $ = $  $\frac{b}{a}$ 也就是说这题中格子$(i, j)$的值就是既能被$i$整除又能被$j$整 ...

  7. Luogu 2839 [国家集训队]middle

    感觉这题挺好的. 首先对于中位数最大有一个很经典的处理方法就是二分,每次二分一个数组中的下标$mid$,然后我们把$mid$代回到原来的数组中检查,如果一个数$a_{i} \geq mid$,那么就把 ...

  8. 7.26实习培训日志-Oracle SQL(二)

    Oracle SQL(二) 条件表达式 CASE 语句 或者DECODE 函数,两者均可实现 IF-THEN-ELSE 的逻辑,相比较而言,DECODE 更加简洁 SELECT last_name , ...

  9. C#的递归函数

    我的理解:函数内部把自己当另一个函数来调用 其实还是调用的他自己 递归函数必须有结束条件,否则就是死循环

  10. python 学习笔记12(事件驱动、IO多路复用、异步IO)

    阻塞IO和非阻塞IO.同步IO和异步IO的区别 讨论背景:Linux环境下的network IO. 1.先决条件(几个重要概念) 1.1.用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32 ...