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. 关于cin

    今天同学调试一个简单的程序的时候发现了问题,我们两个讨论的时候弄出了好多乐子 #include <iostream> using namespace std; int main() { ; ...

  2. web安全之同源策略

    为什么使用同源策略?一个重要原因就是对cookie的保护,cookie 中存着sessionID .如果已经登录网站,同时又去了任意其他网站,该网站有恶意JS代码.如果没有同源策略,那么这个网站就能通 ...

  3. new LayoutParams 使用

    ImageView imageView = new ImageView(mcontext); LayoutParams layoutParams = new LayoutParams(150,130) ...

  4. jprofiler9.1.1 安装与配置

    一.安装部分 安装包: 1.jprofiler_linux_9_1_1.rpm 2.jprofiler_windows-x64_9_1_1.exe 需要注意的是,Linux 和 Windows 安装的 ...

  5. 9、perldoc文档阅读器

    转载:http://www.cnblogs.com/nkwy2012/p/6016320.html 一般来说,将文档的名称作为参数传递给perldoc命令,即可查阅该文档.比如下面,给定文档名称per ...

  6. 服务器控件button点击时执行脚本弹出提示对话框Button2.Attributes.Add("onclick","事件")

    <HTML> <HEAD>  <title>**********资料更新</title>  <meta content="Microso ...

  7. 【leetcode 3. 无重复字符的最长子串】解题报告

    思路:滑动窗口的思想 方法一:滑动窗口 int lengthOfLongestSubstring(string s) { /* 控制一个滑动窗口,窗口内的字符都是不重复的,通过set可以做到判断字符是 ...

  8. MATLAB求解非齐次线性方程组

    例如方程组: 法1:左除法 >> A=[3 1 -1;1 2 4;-1 4 5];b=[3.6;2.1;-1.4]; >> x=A\b x = 1.4818 -0.4606 0 ...

  9. 《OD学storm》20160828

    一.Storm项目 1. 架构 javasdk -> nginx -> 日志文件 -> flume agent(collector) -> hdfs -> kafka - ...

  10. CF 980D Perfect Groups(数论)

    CF 980D Perfect Groups(数论) 一个数组a的子序列划分仅当这样是合法的:每个划分中的任意两个数乘积是完全平方数.定义a的权值为a的最小子序列划分个数.现在给出一个数组b,问权值为 ...