<!DOCTYPE html>

























	























<html class="hasSidebar hasPageActions hasBreadcrumb conceptual has-default-focus theme-light" lang="en-us" dir="ltr" data-css-variable-support="true" data-authenticated="false" data-auth-status-determined="false" data-target="docs" x-ms-format-detection="none">

<head>
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1.0" />
	<meta property="og:title" content="Chris Smith's completely unique view" />
	<meta property="og:type" content="website" />
	<meta property="og:url" content="https://docs.microsoft.com/en-us/archive/blogs/chrsmith/" />

	<meta name="twitter:card" content="summary" />
	<meta name="twitter:site" content="@docsmsft" />


	<meta name="author" content="kexugit" />
<meta name="breadcrumb_path" content="/archive/blogs/bread/toc.json" />
<meta name="depot_name" content="MSDN.blogs-archive" />
<meta name="document_id" content="cd655cff-bc8f-f6d8-f870-a82cdde7b1e4" />
<meta name="document_version_independent_id" content="3c8a7cd1-e25f-510b-0771-edd94a7ff974" />
<meta name="gitcommit" content="https://docs-archive.visualstudio.com/DefaultCollection/docs-archive-project/_git/blogs-archive-pr/commit/b1e8e2636fecb5506007f86ab5aec32dc1eb4ffb?path=/blogs-archive/chrsmith/index.md&amp;_a=contents" />
<meta name="is_archived" content="true" />
<meta name="locale" content="en-us" />
<meta name="ms.author" content="Archiveddocs" />
<meta name="ms.topic" content="Archived" />
<meta name="original_content_git_url" content="https://docs-archive.visualstudio.com/DefaultCollection/docs-archive-project/_git/blogs-archive-pr?path=/blogs-archive/chrsmith/index.md&amp;version=GBlive&amp;_a=contents" />
<meta name="ROBOTS" content="noindex" />
<meta name="search.ms_docsetname" content="blogs-archive" />
<meta name="search.ms_product" content="MSDN" />
<meta name="search.ms_sitename" content="Docs" />
<meta name="site_name" content="Docs" />
<meta name="uhfHeaderId" content="MSDocsHeader-Archive" />
<meta name="updated_at" content="2020-02-07 07:49 PM" />
<meta name="page_type" content="conceptual" />
<meta name="toc_rel" content="toc.json" />
<meta name="word_count" content="1366" />


	<meta name="scope" content="Blogs" />
<link href="https://docs.microsoft.com/en-us/archive/blogs/chrsmith/" rel="canonical">
	<title>Chris Smith's completely unique view | Microsoft Docs</title>

		<link rel="stylesheet" href="/_themes/docs.theme/master/en-us/_themes/styles/38dffcd8.site-ltr.css ">

	<link rel="stylesheet" href="/_themes/docs.theme/master/en-us/_themes/styles/5a8a71c1.conceptual.css ">


	<script>
	var msDocs = {
		data: {
			timeOrigin: Date.now(),
			contentLocale: 'en-us',
			contentDir: 'ltr',
			userLocale: 'en-us',
			userDir: 'ltr',
			pageTemplate: 'Conceptual',
			brand: '',
			context: {

			},
			hasBinaryRating: false,
			hasGithubIssues: false,
			showFeedbackReport: false,
			enableTutorialFeedback: false,
			feedbackSystem: 'None',
			feedbackGitHubRepo: '',
			feedbackProductUrl: '',
			contentGitUrl: 'https://docs-archive.visualstudio.com/DefaultCollection/docs-archive-project/_git/blogs-archive-pr?path=/blogs-archive/chrsmith/index.md&version=GBlive&_a=contents',
			extendBreadcrumb: false,
			isEditDisplayable: false,
			hideViewSource: false,
			hasPageActions: true,
			hasBookmark: true,
			hasShare: true
		},
		functions:{}
	};
	</script>
	<script nomodule src="/static/third-party/bluebird/3.5.0/bluebird.min.js" integrity="sha384-aD4BDeDGeLXLpPK4yKeqtZQa9dv4a/7mQ+4L5vwshIYH1Mc2BrXvHd32iHzYCQy5" crossorigin="anonymous"></script>
	<script nomodule src="/static/third-party/fetch/3.0.0/fetch.umd.min.js" integrity="sha384-EQIXrC5K2+7X8nGgLkB995I0/6jfAvvyG1ieZ+WYGxgJHFMD/alsG9fSDWvzb5Y1" crossorigin="anonymous"></script>
	<script nomodule src="/static/third-party/template/1.4.0/template.min.js" integrity="sha384-1zKzI6ldTVHMU7n0W2HpE/lhHI+UG4D9IIaxbj3kT2UhCWicdTuJkTtnKuu0CQzN" crossorigin="anonymous"></script>
	<script nomodule src="/static/third-party/url/0.5.7/url.min.js" integrity="sha384-vn7xBMtpSTfzaTRWxj0kVq0UcsbBrTOgZ/M1ISHqe1V358elYva+lfiEC+T8jLPc" crossorigin="anonymous"></script>
	<script nomodule src="/_themes/docs.theme/master/en-us/_themes/scripts/e482e449.index-polyfills.js"></script>
		<script src="/_themes/docs.theme/master/en-us/_themes/scripts/4d1d7de.index-docs.js"></script>
</head>

<body lang="en-us" dir="ltr">
<div class="header-holder has-default-focus">
	<a href="#main" class="skip-to-main-link visually-hidden-until-focused is-fixed has-inner-focus focus-visible has-top-zero has-left-zero has-right-zero has-padding-medium has-text-centered has-body-background-medium" tabindex="1">Skip to main content</a>
		<div id="headerAreaHolder" data-bi-name="header">
<header role="banner" itemscope="itemscope" itemtype="http://schema.org/Organization">
	<div class="nav-bar">
		<a itemprop="url" href="https://www.microsoft.com" aria-label="Microsoft" class="nav-bar-button has-padding-left-medium-mobile">
			<div class="nav-bar-logo has-background-image theme-display is-light" role="presentation" aria-hidden="true" itemprop="logo" itemscope="itemscope"></div>
			<div class="nav-bar-logo has-background-image theme-display is-dark is-high-contrast" role="presentation" aria-hidden="true" itemprop="logo" itemscope="itemscope"></div>
		</a>
		<div class="nav-bar-item is-hidden-tablet">
			<button class="nav-bar-button is-size-5 is-text has-body-background has-padding-none" title="Global navigation">
				<span class="has-text-weight-semibold has-padding-left-small has-padding-bottom-extra-small"></span>
				<div class="nav-bar-burger has-padding-none has-height-zero">
					<span></span>
					<span></span>
					<span></span>
					<span class="is-visually-hidden">Global navigation</span>
				</div>
			</button>
		</div>
		<nav class="nav-bar-nav" role="navigation" aria-label="Global">
			<ul class="nav-bar-nav-list">
				<li class="nav-bar-item is-category has-spacing">
					<a class="nav-bar-button title has-hover-underline is-4" itemprop="url" href="/en-us/">
						<span>Docs</span>
					</a>
				</li>
				<li class="nav-bar-item">
					<a class="nav-bar-button has-hover-underline" href="/en-us/">
						<span>Documentation</span>
					</a>
				</li>
				<li class="nav-bar-item">
					<a class="nav-bar-button has-hover-underline" href="/en-us/learn/">
						<span>Learn</span>
					</a>
				</li>
				<li class="nav-bar-item">
					<a class="nav-bar-button has-hover-underline" href="/en-us/samples/browse/">
						<span>Code Samples</span>
					</a>
				</li>
				<li class="dropdown nav-bar-item" hidden="">
					<button aria-expanded="false" class="dropdown-trigger nav-bar-button has-hover-underline" aria-controls="ax-53">
						<span>More</span>
						<span class="nav-bar-button-chevron" aria-hidden="true">
							<span class="docon docon-chevron-down-light expanded-indicator"></span>
						</span>
					</button>
					<ul class="dropdown-menu" id="ax-53" aria-label="More">
						<li class="nav-bar-item" hidden="">
							<a class="nav-bar-button" href="/en-us/">Documentation</a>
						</li>
						<li class="nav-bar-item" hidden="">
							<a class="nav-bar-button" href="/en-us/learn/">Learn</a>
						</li>
						<li class="nav-bar-item" hidden="">
							<a class="nav-bar-button" href="/en-us/samples/browse/">Code Samples</a>
						</li>
					</ul>
				</li>
			</ul>
		</nav>
		<span class="nav-bar-spacer is-hidden-mobile"></span>
		<div class="nav-bar-item has-flex-grow-mobile has-flex-shrink-mobile">
		</div>
		<div class="nav-bar-item is-size-7 is-hidden-mobile">
		</div>
	</div>
	<div class="nav-bar is-content is-hidden-mobile has-border-top">
	</div>
</header>		</div>
		<div class="content-header uhf-container has-padding has-default-focus has-border-bottom-none" data-bi-name="content-header">
			<nav class="has-padding-none has-padding-left-medium-tablet has-padding-right-medium-tablet has-padding-left-none-uhf-tablet has-padding-left-none-uhf-tablet has-padding-none-desktop has-flex-grow" data-bi-name="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList" role="navigation" aria-label="Breadcrumb">
				<ul id="page-breadcrumbs" class="breadcrumbs">
				</ul>
			</nav>
		<div class="content-header-controls">
			<button type="button" class="contents-button button" data-bi-name="contents-expand" aria-haspopup="true">
				<span class="icon"><span class="docon docon-menu" aria-hidden="true"></span></span>
				<span>Contents</span>
			</button>
		</div>
		<div class="content-header-controls exit-focus">
			<button type="button" class="ap-collapse-behavior ap-expanded button" data-bi-name="ap-collapse" aria-controls="action-panel">
				<span class="icon"><span class="docon docon-exit-mode" aria-hidden="true"></span></span>
				<span>Exit focus mode</span>
			</button>
		</div>
		<div class="has-padding-none-tablet has-padding-medium is-size-7 is-flex-touch has-flex-justify-content-space-between-touch has-flex-grow">
			<ul class="is-hidden-mobile action-list has-flex-justify-content-start has-flex-justify-content-end-tablet is-flex is-flex-row has-flex-wrap has-flex-grow is-unstyled">
				<li>
					<button type="button" class="bookmark button is-text has-inner-focus is-small is-icon-only-touch" data-list-type="bookmarks" data-bi-name="bookmark" title="Bookmark this page">
						<span class="icon" aria-hidden="true">
							<span class="docon docon-single-bookmark"></span>
						</span>
						<span class="bookmark-status is-visually-hidden-touch is-hidden-portrait">Bookmark</span>
					</button>
				</li>
				<li>
<div class="sharing dropdown has-caret">
	<button class="dropdown-trigger button is-text is-fullwidth has-flex-justify-content-start has-inner-focus is-small is-icon-only-touch" aria-controls="sharing-menu" aria-expanded="false" title="Share This Document" data-bi-name="share">
		<span class="icon" aria-hidden="true">
			<span class="docon docon-sharing"></span>
		</span>
		<span class="is-visually-hidden-touch is-hidden-portrait">Share</span>
	</button>
	<div class="dropdown-menu has-padding-small" id="sharing-menu">
		<ul data-bi-name="share-links">
			<li>
				<a class="button is-text is-fullwidth has-flex-justify-content-start has-inner-focus is-small share-twitter" data-bi-name="twitter">
					<span class="icon">
						<span class="docon docon-brand-twitter has-text-primary" aria-hidden="true"></span>
					</span>
					<span>Twitter</span>
				</a>
			</li>
			<li>
				<a class="button is-text is-fullwidth has-flex-justify-content-start has-inner-focus is-small share-linkedin" data-bi-name="linkedin">
					<span class="icon">
						<span class="docon docon-brand-linkedin has-text-primary" aria-hidden="true"></span>
					</span>
					<span>LinkedIn</span>
				</a>
			</li>
			<li>
				<a class="button is-text is-fullwidth has-flex-justify-content-start has-inner-focus is-small share-facebook" data-bi-name="facebook">
					<span class="icon">
						<span class="docon docon-brand-facebook has-text-primary" aria-hidden="true"></span>
					</span>
					<span>Facebook</span>
				</a>
			</li>
			<li>
				<a class="button is-text is-fullwidth has-flex-justify-content-start has-inner-focus is-small share-email" data-bi-name="email">
					<span class="icon">
						<span class="docon docon-mail-message-fill has-text-primary" aria-hidden="true"></span>
					</span>
					<span>Email</span>
				</a>
			</li>
		</ul>
	</div>
</div>				</li>
			</ul>
			<button type="button" class="has-border contents-button button is-small is-text is-hidden-tablet has-inner-focus" aria-label="Contents" data-bi-name="contents-expand">
				<span class="icon">
					<span class="docon docon-editor-list-bullet" aria-hidden="true"></span>
				</span>
				<span>Table of contents</span>
			</button>
			<div class="is-invisible"></div>
			<div class="is-hidden-tablet level-item is-flexible level-right">
				<button type="button" class="page-actions-button button is-small is-text is-hidden-tablet has-inner-focus has-border is-full-height  has-margin-left-small" aria-label="Page Actions" data-bi-name="pageactions">
					<span class="icon">
						<span class="docon docon-more-vertical" aria-hidden="true"></span>
					</span>
				</button>
			</div>
		</div>
	</div>

	<div id="disclaimer-holder" class="has-overflow-hidden has-default-focus"></div>
	</div>

	<div class="mainContainer  uhf-container has-top-padding  has-default-focus" data-bi-name="body">

		<div class="columns has-large-gaps is-gapless-mobile ">

			<div id="left-container" class="left-container is-hidden-mobile column is-one-third-tablet is-one-quarter-desktop">
				<nav id="affixed-left-container" class="is-fixed is-flex is-flex-column" role="navigation" aria-label="Primary"></nav>
			</div>

			<section class="primary-holder column is-two-thirds-tablet is-three-quarters-desktop">
				<div class="columns is-gapless-mobile has-large-gaps ">


				<div id="main-column" class="column  is-full is-four-fifths-desktop ">

					<main id="main" role="main" class="content " data-bi-name="content" lang="en-us" dir="ltr">



						<h1 id="chris-smiths-completely-unique-view">Chris Smith's completely unique view</h1>

						<ul class="metadata page-metadata" data-bi-name="page info" lang="en-us" dir="ltr">
							<li>
								<time class="is-invisible" data-article-date aria-label="Article review date" datetime="2020-02-07T19:49:50.773Z" data-article-date-source="git">2/7/2020</time>
							</li>
								<li class="readingTime">6 minutes to read</li>
						</ul>

						<nav id="center-doc-outline" class="doc-outline is-hidden-desktop" data-bi-name="intopic toc" role="navigation" aria-label="Article Outline">
							<h3>In this article</h3>
						</nav>

						<!-- <content> -->
							<p>Algorithms, functional programming, CLR 4.0, and of course, F#!</p>
<h3 id="good-news-and-sad-news---leaving-microsoft"><a href="../chrsmith/good-news-and-sad-news-leaving-microsoft" data-linktype="relative-path">Good News and Sad News - Leaving Microsoft</a></h3>
<p>The Good News You might have heard, Visual Studio 2010 is done, launched, and out the door! That’s...</p>
<p>Author: ChrSmith
Date: 04/13/2010</p>
<h3 id="writing-a-starcraft-bot-in-f"><a href="../chrsmith/writing-a-starcraft-bot-in-f" data-linktype="relative-path">Writing a StarCraft Bot in F#</a></h3>
<p>Hi, I’m Chris Smith. You might know me as the world famous author of Programming F#, but outside of...</p>
<p>Author: ChrSmith
Date: 03/18/2010</p>
<h3 id="dawg-fight-optimizing-text-search-in-f-ii"><a href="../chrsmith/dawg-fight-optimizing-text-search-in-f-ii" data-linktype="relative-path">DAWG-fight, Optimizing text search in F# II</a></h3>
<p>Some of you may have seen Dr. Brian McNamara’s post refuting my credentials as an evil genius. Lies!...</p>
<p>Author: ChrSmith
Date: 02/17/2010</p>
<h3 id="f-ctp-update"><a href="../chrsmith/f-ctp-update" data-linktype="relative-path">F# CTP Update!</a></h3>
<p>Hot on the heels of the Visual Studio 2010 Release Candidate comes the February, 2010 F# CTP. There...</p>
<p>Author: ChrSmith
Date: 02/11/2010</p>
<h3 id="trie-ing-to-optimize-text-search-in-f"><a href="../chrsmith/trie-ing-to-optimize-text-search-in-f" data-linktype="relative-path">Trie-ing to optimize text search in F#</a></h3>
<p>Any evil genius knows that if you want to stay on top you need to exercise your mind. Most evil...</p>
<p>Author: ChrSmith
Date: 02/09/2010</p>
<h3 id="being-an-evil-genius-with-f-and-net"><a href="../chrsmith/being-an-evil-genius-with-f-and-net" data-linktype="relative-path">Being an Evil Genius with F# and .NET</a></h3>
<p>A couple weeks ago I was in glorious Sandusky, Ohio presenting at CodeMash. CodeMash is a community...</p>
<p>Author: ChrSmith
Date: 01/24/2010</p>
<h3 id="the-halting-problem-and-the-church-turing-thesis"><a href="../chrsmith/the-halting-problem-and-the-church-turing-thesis" data-linktype="relative-path">The Halting Problem and the Church-Turing Thesis</a></h3>
<p>Two weeks ago at PDC Dustin “former blogger” Campbell and I sat down with Keith and Woody to record...</p>
<p>Author: ChrSmith
Date: 11/30/2009</p>
<h3 id="source-code-for-programming-f"><a href="../chrsmith/source-code-for-programming-f" data-linktype="relative-path">Source Code for Programming F#</a></h3>
<p>I've gotten a few requests recently for the source code of the examples in Programming F#. I've...</p>
<p>Author: ChrSmith
Date: 11/23/2009</p>
<h3 id="f-language-details-gotchas"><a href="../chrsmith/f-language-details-gotchas" data-linktype="relative-path">F# Language Details (Gotchas)</a></h3>
<p>The ‘F’ in F# stands for fun. However, there are some details in F# that might lead to bugs,...</p>
<p>Author: ChrSmith
Date: 11/09/2009</p>
<h3 id="awesome-f---decision-trees--part-ii"><a href="../chrsmith/awesome-f-decision-trees-part-ii" data-linktype="relative-path">Awesome F# - Decision Trees – Part II</a></h3>
<p>In my previous post I went over the theory behind the ID3 algorithm. Now that we got all that...</p>
<p>Author: ChrSmith
Date: 11/02/2009</p>
<h3 id="awesome-f---decision-trees--part-i"><a href="../chrsmith/awesome-f-decision-trees-part-i" data-linktype="relative-path">Awesome F# - Decision Trees – Part I</a></h3>
<p>Programming F# is out! Meaning you can, and should, go to the store and pick up a copy today. With...</p>
<p>Author: ChrSmith
Date: 10/31/2009</p>
<h3 id="upcoming-f-talks"><a href="../chrsmith/upcoming-f-talks" data-linktype="relative-path">Upcoming F# Talks</a></h3>
<p>Recently legendary Cambridge research Don Syme presented an Introduction to F# at JAOO Aarhus in...</p>
<p>Author: ChrSmith
Date: 10/15/2009</p>
<h3 id="grotesque-f-code---i"><a href="../chrsmith/grotesque-f-code-i" data-linktype="relative-path">Grotesque F# Code - I</a></h3>
<p>Recently a friend came to me in a mild panic about some massive refactoring he needed to do to an F#...</p>
<p>Author: ChrSmith
Date: 09/14/2009</p>
<h3 id="f-for-architects-hitting-the-sweet-spot"><a href="../chrsmith/f-for-architects-hitting-the-sweet-spot" data-linktype="relative-path">F# for Architects: Hitting the sweet spot</a></h3>
<p>When I was at DevLink last week I gave a talk designed to specifically identify why and when you...</p>
<p>Author: ChrSmith
Date: 08/20/2009</p>
<h3 id="back-in-action"><a href="../chrsmith/back-in-action" data-linktype="relative-path">Back in Action!</a></h3>
<p>I know it’s cliché to blog about blogging, but I’d like to take this opportunity to explain why...</p>
<p>Author: ChrSmith
Date: 08/20/2009</p>
<h3 id="lightweight-pgn-parser-in-f--part-i"><a href="../chrsmith/lightweight-pgn-parser-in-f-part-i" data-linktype="relative-path">Lightweight PGN parser in F# – Part I</a></h3>
<p>If you’ve ever spent a lot of time around the game of Chess you’ve probably seen or interacted with...</p>
<p>Author: ChrSmith
Date: 06/13/2009</p>
<h3 id="programming-f--official-cover"><a href="../chrsmith/programming-f-official-cover" data-linktype="relative-path">Programming F# – Official Cover</a></h3>
<p>Edit 8/19: You might notice, the cover is no longer a jellyfish. While I know this is a slight...</p>
<p>Author: ChrSmith
Date: 05/13/2009</p>
<h3 id="f-scripting-zen--bulk-updating-testcases"><a href="../chrsmith/f-scripting-zen-bulk-updating-testcases" data-linktype="relative-path">F# Scripting Zen – Bulk Updating Testcases</a></h3>
<p>As the F# team is busy working to finish up Visual Studio 2010, one task left to complete is to...</p>
<p>Author: ChrSmith
Date: 05/09/2009</p>
<h3 id="f-community-roundup"><a href="../chrsmith/f-community-roundup" data-linktype="relative-path">F# Community Roundup</a></h3>
<p>There’s plenty going on in the F# community these days, I figured I’d provide a shameless plug for...</p>
<p>Author: ChrSmith
Date: 05/05/2009</p>
<h3 id="idiomatic-f--functional-vs-imperative"><a href="../chrsmith/idiomatic-f-functional-vs-imperative" data-linktype="relative-path">Idiomatic F# – Functional vs. Imperative</a></h3>
<p>Our story begins with this guy, Stuart Bowers, sipping functional programming cool aid out of a...</p>
<p>Author: ChrSmith
Date: 04/23/2009</p>
<h3 id="f-and-the-pfx-round-1"><a href="../chrsmith/f-and-the-pfx-round-1" data-linktype="relative-path">F# and the PFX Round 1</a></h3>
<p>I’m currently working on a chapter for Programming F# titled Asynchronous and Parallel Programming...</p>
<p>Author: ChrSmith
Date: 04/08/2009</p>
<h3 id="book-update--new-coauthor"><a href="../chrsmith/book-update-new-coauthor" data-linktype="relative-path">Book Update – NEW Coauthor!</a></h3>
<p>You might be concerned about my lack of blogging, perhaps that I was lost in the woods and perhaps...</p>
<p>Author: ChrSmith
Date: 04/01/2009</p>
<h3 id="petition-for-programming-fs-book-cover"><a href="../chrsmith/petition-for-programming-fs-book-cover" data-linktype="relative-path">Petition for Programming F#’s Book Cover!</a></h3>
<p>You might have noticed my blogging has slowed down to a lull; never fear, this is just because I...</p>
<p>Author: ChrSmith
Date: 02/02/2009</p>
<h3 id="deep-fried-f"><a href="../chrsmith/deep-fried-f" data-linktype="relative-path">Deep Fried F#</a></h3>
<p>Episode 24: Chatting about F# with Chris Smith and Dustin Campbell “Get your code on!” Being the...</p>
<p>Author: ChrSmith
Date: 01/15/2009</p>
<h3 id="new-years-resolutions-v2009"><a href="../chrsmith/new-years-resolutions-v2-0-0-9" data-linktype="relative-path">New Years resolutions v2.0.0.9</a></h3>
<p>So I was tagged by my new homie Sarah Dutkiewicz AKA Coding Geekette about blogging my goals for...</p>
<p>Author: ChrSmith
Date: 01/15/2009</p>
<h3 id="speech-recognition-is-gun-and-easy"><a href="../chrsmith/speech-recognition-is-gun-and-easy" data-linktype="relative-path">Speech Recognition is gun and easy!</a></h3>
<p>Evidently Microsoft ninjaed a new assembly into the .NET framework with the 3.0 release called...</p>
<p>Author: ChrSmith
Date: 12/31/2008</p>
<h3 id="f-no-longer-vaporware"><a href="../chrsmith/f-no-longer-vaporware" data-linktype="relative-path">F# No Longer Vaporware</a></h3>
<p>REDMOND, WA - Sadly, after nearly four years of stringing developers along with Microsoft's longest...</p>
<p>Author: ChrSmith
Date: 12/10/2008</p>
<h3 id="f-zen---array-slices"><a href="../chrsmith/f-zen-array-slices" data-linktype="relative-path">F# Zen - Array slices</a></h3>
<p>Sorry for not being as regular with blogging, I've been sick and working hard on something pretty...</p>
<p>Author: ChrSmith
Date: 12/09/2008</p>
<h3 id="f-zen---rot13"><a href="../chrsmith/f-zen-rot13" data-linktype="relative-path">F# Zen - ROT13</a></h3>
<p>Below is a primitive implementation of ROT13 / Ceasar Cipher in F#. In short it is a simple...</p>
<p>Author: ChrSmith
Date: 11/07/2008</p>
<h3 id="f-elevator-pitch"><a href="../chrsmith/f-elevator-pitch" data-linktype="relative-path">F# Elevator Pitch</a></h3>
<p>At the PDC I spent about eight hours a day for a full week answering the same question again and...</p>
<p>Author: ChrSmith
Date: 11/01/2008</p>
<h3 id="pdc---day-1"><a href="../chrsmith/pdc-day-1" data-linktype="relative-path">PDC - Day 1</a></h3>
<p>I'm writing this from the 'big room' in the LA Convention Center.If you don't know, PDC is a HUGE...</p>
<p>Author: ChrSmith
Date: 10/27/2008</p>
<h3 id="due-out-next-year--programming-f-by-chris-smith"><a href="../chrsmith/due-out-next-year-programming-f-by-chris-smith" data-linktype="relative-path">Due out Next Year – Programming F# by Chris Smith</a></h3>
<p>I’d like to announce that for the past few months I’ve been secretly working on a book for O’Reilly...</p>
<p>Author: ChrSmith
Date: 10/19/2008</p>
<h3 id="f-zen--the-literal-attribute"><a href="../chrsmith/f-zen-the-literal-attribute" data-linktype="relative-path">F# Zen – The Literal Attribute</a></h3>
<p>When pattern matching it is easy to forget that you are capturing a new value instead of matching...</p>
<p>Author: ChrSmith
Date: 10/03/2008</p>
<h3 id="f-zen---colored-printf"><a href="../chrsmith/f-zen-colored-printf" data-linktype="relative-path">F# Zen - Colored printf</a></h3>
<p>It’s easy to lose track of important data when logging output to the console window, fortunately you...</p>
<p>Author: ChrSmith
Date: 10/01/2008</p>
<h3 id="f-scripting-zen--word-interop"><a href="../chrsmith/f-scripting-zen-word-interop" data-linktype="relative-path">F# Scripting Zen – Word Interop</a></h3>
<p>Edit: Added a ‘comarg’ function to dramatically clean up the syntax for doing COM-interop, since F#...</p>
<p>Author: ChrSmith
Date: 09/23/2008</p>
<h3 id="shameless-plug-roundup"><a href="../chrsmith/shameless-plug-roundup" data-linktype="relative-path">Shameless Plug Roundup</a></h3>
<p>This post is entirely devoted to shameless plugs and ‘Me Too’ blogging.   The Stack Overflow...</p>
<p>Author: ChrSmith
Date: 09/18/2008</p>
<h3 id="book-review--f-for-scientists"><a href="../chrsmith/book-review-f-for-scientists" data-linktype="relative-path">Book Review – F# for Scientists</a></h3>
<p>A few weeks ago Dr. Jon Harrop published F# for Scientists and I had the fortune of snagging a copy...</p>
<p>Author: ChrSmith
Date: 09/16/2008</p>
<h3 id="scripting-in-f"><a href="../chrsmith/scripting-in-f" data-linktype="relative-path">Scripting in F#</a></h3>
<p>The thing you hear most about F# is that it is multi-paradigm, meaning that you can use it to code...</p>
<p>Author: ChrSmith
Date: 09/12/2008</p>
<h3 id="msbuild-tasks-for-lex-and-yacc"><a href="../chrsmith/msbuild-tasks-for-lex-and-yacc" data-linktype="relative-path">MSBuild tasks for Lex and Yacc</a></h3>
<p>While I am thrilled about all the new features we've put into the F# CTP, perhaps the thing I'm most...</p>
<p>Author: ChrSmith
Date: 09/09/2008</p>
<h3 id="simple-f-game-using-wpf"><a href="../chrsmith/simple-f-game-using-wpf" data-linktype="relative-path">Simple F# Game using WPF</a></h3>
<p>With the F# CTP out the door, let’s take a look at what it can do. Ryan Cavanaugh, not the famous...</p>
<p>Author: ChrSmith
Date: 09/04/2008</p>
<h3 id="ctp-awesomeness--goto-definition"><a href="../chrsmith/ctp-awesomeness-goto-definition" data-linktype="relative-path">CTP Awesomeness – Goto Definition</a></h3>
<p>If you’ve used Visual Studio for a few years you’ve probably memorized all the shortcuts and methods...</p>
<p>Author: ChrSmith
Date: 09/02/2008</p>
<h3 id="fsharpp-to-fsproj-converter"><a href="../chrsmith/fsharpp-to-fsproj-converter" data-linktype="relative-path">FSharpp to FSProj Converter</a></h3>
<p>Wow, what a busy week! The F# CTP is out the door, and it's already making reverberations around the...</p>
<p>Author: ChrSmith
Date: 08/31/2008</p>
<h3 id="understanding-tail-recursion"><a href="../chrsmith/understanding-tail-recursion" data-linktype="relative-path">Understanding Tail Recursion</a></h3>
<p>You may have heard of Tail Recursion before, in fact, you may have even written tail recursive...</p>
<p>Author: ChrSmith
Date: 08/07/2008</p>
<h3 id="countdown-to-f-ctp"><a href="../chrsmith/countdown-to-f-ctp" data-linktype="relative-path">Countdown to F# CTP</a></h3>
<p>In case you didn’t see it over on Brian’s blog, he’s posted a sneak peak at the F# Project System:...</p>
<p>Author: ChrSmith
Date: 07/28/2008</p>
<h3 id="icfp-programming-contest"><a href="../chrsmith/icfp-programming-contest" data-linktype="relative-path">ICFP Programming Contest</a></h3>
<p>As far as elite programming contests go, I thought the only one around was the ACM-ICP. (The ACM...</p>
<p>Author: ChrSmith
Date: 07/14/2008</p>
<h3 id="mastering-f-lists"><a href="../chrsmith/mastering-f-lists" data-linktype="relative-path">Mastering F# Lists</a></h3>
<p>Minor update: spelling Lists represent the backbone of functional programming and in order to be an...</p>
<p>Author: ChrSmith
Date: 07/10/2008</p>
<h3 id="some-guidelines-for-readable-f-code"><a href="../chrsmith/some-guidelines-for-readable-f-code" data-linktype="relative-path">Some guidelines for readable F# code</a></h3>
<p>When learning a new programming language it isn’t enough to know the syntax, you must also take the...</p>
<p>Author: ChrSmith
Date: 06/25/2008</p>
<h3 id="shameless-plug---fstest"><a href="../chrsmith/shameless-plug-fstest" data-linktype="relative-path">Shameless plug - FsTest</a></h3>
<p>Matthew Podwysocki finished putting together a DSL for unit testing. I imagine this only scratches...</p>
<p>Author: ChrSmith
Date: 06/22/2008</p>
<h3 id="function-composition"><a href="../chrsmith/function-composition" data-linktype="relative-path">Function Composition</a></h3>
<p>During a lunchtime conversation with Dustin Cambell, of Did it with .NET fame, the topic of Function...</p>
<p>Author: ChrSmith
Date: 06/14/2008</p>
<h3 id="language-oriented-programming-in-f"><a href="../chrsmith/language-oriented-programming-in-f" data-linktype="relative-path">Language Oriented Programming in F#</a></h3>
<p>Last Tuesday I gave a talk to the .NET Developers Association entitled Language Oriented Programming...</p>
<p>Author: ChrSmith
Date: 05/30/2008</p>
<p><a href="../chrsmith/page-2" data-linktype="relative-path">Next&gt;</a></p>

						<!-- </content> -->

						</main>

						<!-- recommended content page section -->

							<nav data-bi-name="recommendation-bottom" hidden id="recommended-content-center" class="is-hidden-desktop" aria-labelledby="recommended-content-center-title">
								<h3 id="recommended-content-center-title" class="is-size-2 has-margin-top-large has-margin-bottom-small">Related Articles</h3>
							</nav>

						<!-- end recommended content page section -->

						<!-- page rating section -->
						<!-- end page rating section -->


						<!-- feedback section -->

						<!-- end feedback section -->

						<!-- feedback report section -->
						<!-- end feedback report section -->

						<div class="footerContainer is-visible-interactive has-default-focus ">
<footer id="footer-interactive" data-bi-name="footer" class="footer-layout">

    <div class="is-flex is-full-height has-padding-right-extra-large-desktop">
			<a data-mscc-ic="false" class="locale-selector-link has-flex-shrink-none" href="#" data-bi-name="select-locale"><span class="icon docon docon-world is-size-4 has-margin-right-small" aria-hidden="true"></span><span class="local-selector-link-text"></span></a>
		<div class="has-margin-left-medium has-margin-right-medium has-flex-shrink-none">
<div class="dropdown has-caret-up">
	<button class="dropdown-trigger button is-transparent is-small is-icon-only-touch has-inner-focus theme-dropdown-trigger"
		aria-controls="theme-menu-interactive" aria-expanded="false" title="Theme" data-bi-name="theme">
		<span class="icon">
			<span class="docon docon-sun" aria-hidden="true"></span>
		</span>
		<span>Theme</span>
	</button>
	<div class="dropdown-menu" id="theme-menu-interactive" role="menu">
		<ul class="theme-selector has-padding-small">
			<li class="theme is-block">
				<button class="button is-text is-small theme-control is-fullwidth has-flex-justify-content-start"
					data-theme-to="light">
					<span class="theme-light has-margin-right-small">
						<span
							class="theme-selector-icon css-variable-support has-border is-inline-block has-body-background"
							aria-hidden="true">
							<svg class="svg" xmlns="http://www.w3.org/2000/svg"
								viewBox="0 0 22 14">
								<rect width="22" height="14" class="has-fill-body-background" />
								<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
								<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
								<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
								<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
								<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
								<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
								<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
							</svg>
						</span>
					</span>
					<span role="menuitem">
Light					</span>
				</button>
			</li>
			<li class="theme is-block">
				<button class="button is-text is-small theme-control is-fullwidth has-flex-justify-content-start"
					data-theme-to="dark">
					<span class="theme-dark has-margin-right-small">
						<span
							class="has-border theme-selector-icon css-variable-support is-inline-block has-body-background"
							aria-hidden="true">
							<svg class="svg" xmlns="http://www.w3.org/2000/svg"
								viewBox="0 0 22 14">
								<rect width="22" height="14" class="has-fill-body-background" />
								<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
								<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
								<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
								<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
								<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
								<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
								<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
							</svg>
						</span>
					</span>
					<span role="menuitem">
Dark					</span>
				</button>
			</li>
			<li class="theme is-block">
				<button class="button is-text is-small theme-control is-fullwidth has-flex-justify-content-start"
					data-theme-to="high-contrast">
					<span class="theme-high-contrast has-margin-right-small">
						<span
							class="has-border theme-selector-icon css-variable-support is-inline-block has-body-background"
							aria-hidden="true">
							<svg class="svg" xmlns="http://www.w3.org/2000/svg"
								viewBox="0 0 22 14">
								<rect width="22" height="14" class="has-fill-body-background" />
								<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
								<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
								<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
								<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
								<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
								<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
								<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
							</svg>
						</span>
					</span>
					<span role="menuitem">
High contrast					</span>
				</button>
			</li>
		</ul>
	</div>
</div>		</div>
	</div>

    <ul class="links" data-bi-name="footerlinks">
		<li><a data-mscc-ic="false" href="https://docs.microsoft.com/en-us/previous-versions/" data-bi-name="archivelink">Previous Version Docs</a></li>
		<li><a data-mscc-ic="false" href="https://docs.microsoft.com/en-us/teamblog" data-bi-name="bloglink">Blog</a></li>
		<li><a data-mscc-ic="false" href="https://docs.microsoft.com/en-us/contribute" data-bi-name="contributorGuide">Contribute</a></li>
				<li><a data-mscc-ic="false" href="https://go.microsoft.com/fwlink/?LinkId=521839" data-bi-name="privacy">Privacy &amp; Cookies</a></li>
		<li><a data-mscc-ic="false" href="https://docs.microsoft.com/en-us/legal/termsofuse" data-bi-name="termsofuse">Terms of Use</a></li>
		<li><a data-mscc-ic="false" href="https://aka.ms/sitefeedback" data-bi-name="feedback">Site Feedback</a></li>
			<li><a data-mscc-ic="false" href="https://www.microsoft.com/en-us/legal/intellectualproperty/Trademarks/EN-US.aspx" data-bi-name="trademarks">Trademarks</a></li>
		<li>&copy; Microsoft 2020</li>
    </ul>
</footer>
						</div>
					</div>

					<div class="is-size-7 right-container column is-one-quarter is-one-fifth-desktop is-hidden-mobile is-hidden-tablet-only" data-bi-name="pageactions" role="complementary" aria-label="Page Actions">
						<div id="affixed-right-container" class="doc-outline is-fixed is-vertically-scrollable">
								<nav data-bi-name="recommendation-sidebar" hidden id="recommended-content-nav" role="navigation" aria-labelledby="recommended-content-nav-title">
									<h3 id="recommended-content-nav-title">Related Articles</h3>
								</nav>
							<nav id="side-doc-outline" data-bi-name="intopic toc" role="navigation" aria-label="Article Outline">
								<h3>In this article</h3>
							</nav>
						</div>
					</div>

					<!--end of div.columns -->
				</div>

			<!--end of .primary-holder -->
			</section>

			<aside id="interactive-container" class="interactive-container is-visible-interactive column has-body-background-dark ">
			</aside>
		</div>

		<!--end of .mainContainer -->
	</div>

	<div id="openFeedbackContainer" class="openfeedback-container"></div>

	<div class="footerContainer has-default-focus is-hidden-interactive ">
<footer id="footer" data-bi-name="footer" class="footer-layout uhf-container has-padding" role="contentinfo">

    <div class="is-flex is-full-height has-padding-right-extra-large-desktop">
			<a data-mscc-ic="false" class="locale-selector-link has-flex-shrink-none" href="#" data-bi-name="select-locale"><span class="icon docon docon-world is-size-4 has-margin-right-small" aria-hidden="true"></span><span class="local-selector-link-text"></span></a>
		<div class="has-margin-left-medium has-margin-right-medium has-flex-shrink-none">
<div class="dropdown has-caret-up">
	<button class="dropdown-trigger button is-transparent is-small is-icon-only-touch has-inner-focus theme-dropdown-trigger"
		aria-controls="theme-menu" aria-expanded="false" title="Theme" data-bi-name="theme">
		<span class="icon">
			<span class="docon docon-sun" aria-hidden="true"></span>
		</span>
		<span>Theme</span>
	</button>
	<div class="dropdown-menu" id="theme-menu" role="menu">
		<ul class="theme-selector has-padding-small">
			<li class="theme is-block">
				<button class="button is-text is-small theme-control is-fullwidth has-flex-justify-content-start"
					data-theme-to="light">
					<span class="theme-light has-margin-right-small">
						<span
							class="theme-selector-icon css-variable-support has-border is-inline-block has-body-background"
							aria-hidden="true">
							<svg class="svg" xmlns="http://www.w3.org/2000/svg"
								viewBox="0 0 22 14">
								<rect width="22" height="14" class="has-fill-body-background" />
								<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
								<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
								<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
								<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
								<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
								<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
								<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
							</svg>
						</span>
					</span>
					<span role="menuitem">
Light					</span>
				</button>
			</li>
			<li class="theme is-block">
				<button class="button is-text is-small theme-control is-fullwidth has-flex-justify-content-start"
					data-theme-to="dark">
					<span class="theme-dark has-margin-right-small">
						<span
							class="has-border theme-selector-icon css-variable-support is-inline-block has-body-background"
							aria-hidden="true">
							<svg class="svg" xmlns="http://www.w3.org/2000/svg"
								viewBox="0 0 22 14">
								<rect width="22" height="14" class="has-fill-body-background" />
								<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
								<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
								<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
								<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
								<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
								<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
								<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
							</svg>
						</span>
					</span>
					<span role="menuitem">
Dark					</span>
				</button>
			</li>
			<li class="theme is-block">
				<button class="button is-text is-small theme-control is-fullwidth has-flex-justify-content-start"
					data-theme-to="high-contrast">
					<span class="theme-high-contrast has-margin-right-small">
						<span
							class="has-border theme-selector-icon css-variable-support is-inline-block has-body-background"
							aria-hidden="true">
							<svg class="svg" xmlns="http://www.w3.org/2000/svg"
								viewBox="0 0 22 14">
								<rect width="22" height="14" class="has-fill-body-background" />
								<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
								<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
								<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
								<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
								<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
								<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
								<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
							</svg>
						</span>
					</span>
					<span role="menuitem">
High contrast					</span>
				</button>
			</li>
		</ul>
	</div>
</div>		</div>
	</div>
    <ul class="links" data-bi-name="footerlinks">
		<li><a data-mscc-ic="false" href="https://docs.microsoft.com/en-us/previous-versions/" data-bi-name="archivelink">Previous Version Docs</a></li>
		<li><a data-mscc-ic="false" href="https://docs.microsoft.com/en-us/teamblog" data-bi-name="bloglink">Blog</a></li>
		<li><a data-mscc-ic="false" href="https://docs.microsoft.com/en-us/contribute" data-bi-name="contributorGuide">Contribute</a></li>
				<li><a data-mscc-ic="false" href="https://go.microsoft.com/fwlink/?LinkId=521839" data-bi-name="privacy">Privacy &amp; Cookies</a></li>
		<li><a data-mscc-ic="false" href="https://docs.microsoft.com/en-us/legal/termsofuse" data-bi-name="termsofuse">Terms of Use</a></li>
		<li><a data-mscc-ic="false" href="https://aka.ms/sitefeedback" data-bi-name="feedback">Site Feedback</a></li>
			<li><a data-mscc-ic="false" href="https://www.microsoft.com/en-us/legal/intellectualproperty/Trademarks/EN-US.aspx" data-bi-name="trademarks">Trademarks</a></li>
		<li>&copy; Microsoft 2020</li>
    </ul>
</footer>
	</div>

	<div id="action-panel" role="region" aria-label="Action Panel" class="action-panel has-default-focus" tabindex="-1"></div>
</body>
</html>
