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. WEB 项目中的全局异常处理

    在web 项目中,遇到异常一般有两种处理方式:try.....catch....:throw 通常情况下我们用try.....catch.... 对异常进行捕捉处理,可是在实际项目中随时的进行异常捕捉 ...

  2. ubuntu 和 CentOS 安装docker

    一.ubuntu14.04 安装docker 1 apt-get update2 apt-get update-grup3 reboot4 检查mapper的安装:ls -l /sys/class/m ...

  3. PopupWindow 从底部弹出窗体

    第一步  : 初始化PopupWindow private void initPop() { if (view == null) { // 照片 view = View.inflate(Registe ...

  4. [51nod1106]质数检测

    解题关键: 根据质数的定义,在判断一个数n是否是质数时,我们只要用1至n-1去除n,看看能否整除即可.但我们有更好的办法.先找一个数m,使m的平方大于n,再用<=m的质数去除n(n即为被除数), ...

  5. TCP的三次握手和四次挥手,为什么?

    首先,我们要知道TCP是全双工的,即客户端在给服务器端发送信息的同时,服务器端也可以给客户端发送信息.而半双工的意思是A可以给B发,B也可以给A发,但是A在给B发的时候,B不能给A发,即不同时,为半双 ...

  6. 3. 文件上传靶机实战(附靶机跟writeup)

    upload-labs 一个帮你总结所有类型的上传漏洞的靶场 文件上传靶机下载地址:https://github.com/c0ny1/upload-labs   运行环境 操作系统:推荐windows ...

  7. 2. DVWA亲测CSRF漏洞

    DVWA登陆      用户名:admin   密码:password Low级: 查看源代码: <?php if (isset($_GET['Change'])) { // Turn requ ...

  8. 20169201 2016-2017-2 实验二《Java面向对象程序设计》

    实验一:程序设计中临时变量的使用 代码托管 1.删除数组中的元素5 for(int i = 4; i < arr.length - 1; i ++){ arr[i] = arr[i + 1]; ...

  9. NetCore 学习笔记(DI 实例生命周期)

    Transient: 每一次GetService都会创建一个新的实例 Scoped:    在同一个Scope内只初始化一个实例,同一个请求内只会被创建一次 Singleton :整个应用程序生命周期 ...

  10. Mysql-2-数据库基础

    (1)mysql是一个小型关系型数据库管理系统. (2)mysql是一个快速.多线程.多用户.健壮的SQL数据库服务器.与其他数据库管理系统比,mysql有以下的优势: mysql是一个关系数据库管理 ...