a882990123
码龄9年
求更新 关注
提问 私信
  • 博客:2,287
    社区:1,074
    3,361
    总访问量
  • 暂无
    原创
  • 0
    粉丝
  • 0
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:陕西省
加入CSDN时间: 2016-08-10
博客简介:

a882990123的博客

查看详细资料
个人成就
  • 获得0次点赞
  • 内容获得0次评论
  • 获得0次收藏
  • 博客总排名2,022,147名
  • 原力等级
    原力等级
    0
    原力分
    0
    本月获得
    0
创作历程
  • 8篇
    2015年

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 0

TA参与的活动 0

创作活动更多

王者杯·14天创作挑战营·第2期

这是一个以写作博客为目的的创作活动,旨在鼓励码龄大于4年的博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。 注: 1、参赛者可以进入活动群进行交流、分享创作心得,互相鼓励与支持(开卷),答疑及活动群请见https://bbs.csdn.net/topics/619735097 2、文章质量分查询:https://www.csdn.net/qc 我们诚挚邀请你们参加为期14天的创作挑战赛!

66人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

haskell中类型的等价表示(2)–Sum

前面给了一个Product的等价表示,还有一种是Sum的。同样的先给出两种表示。表示:data S a b = L a | R b等价的表示:newtype S' a b = S' { unS' :: forall r. (a -> r) -> (b -> r) -> r }证明:这里对于S’,forall r限制了可...
转载
发布博客 2015.03.23 ·
238 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

haskell中类型的等价表示(1)–Product

这里我想讨论下一些haskell类型的等价表示。对于一个类型我们可以给出不同的表示。通常我们会使用所谓代数数据结构,但是其实那不是必须的。我们需要的是函数,以及RankNTypes。表示:通常我们使用data定义一个product如下。data P a b = P a b等价的我们可以用一个函数类型来表示‘同样的类型’。newtype P' a b ...
转载
发布博客 2015.03.23 ·
220 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

R语言里的“宏”

最近在看R,不过还是习惯性地对语言特性感兴趣。R也可以操作代码本身,有一个类似lisp 宏的系统。不过他更像IO language,利用延迟计算+代码操作,可以完成类似lisp宏的功能,定义新的“语法结构”。 一个例子: 我们实现一种机制可以部分地给一个函数的参数来得到一个新的函数(柯瑞化)。 比如我们有一个函数如下: f <- function(a, b, c) a如果我...
转载
发布博客 2015.04.07 ·
997 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Lens in Scala

函数式访问器在haskell里被叫做Lens。在面向对象语言里这个没有什么必要,不过作为练习,我们看如何在scala表示van Laarhoven lens.先给出haskell里的lens类型:type Lens s a = forall f. Functor f => (a -> f a) -> (s -> f s)这里有一个全局量词for...
转载
发布博客 2015.03.16 ·
161 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

在scala中使用for表达式做monad运算

在haskell中,我们有语法糖‘do’帮助表达monad运算。scala中我们也有相应语法糖‘for’。 for表达式会被scala compiler做一些变换,简单的例子如下: for { a <- foo b <- bar} yield (a + b)===>foo.flatMap((a) => { bar.map((b) =&...
转载
发布博客 2015.03.12 ·
127 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Monad in Scala

Scala有很强的类型系统。加上一些隐式规则,我们可以在scala里模拟haskell的monad。 先从haskell的monad type class开始: class Monad M where ret :: a -> M a bind :: M a -> (b -> M b) -> M b这里M是type class的参数。它是一个高阶类...
转载
发布博客 2015.03.11 ·
131 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Rust 还不支持higher-kinded types

最近又尝试了Rust,发现变化了好多。以前比较像走scala的路线,现在似乎定了方向,作为system language所以砍掉了很多东西。看到trait就想到了haskell的type class,所以试了试看能不能实现一个monad。不过不幸的是,马上发现它的generic不支持高阶参数。不过,Rust似乎并不反对加入higher-kinded types,而且因为是向后兼容...
转载
发布博客 2015.03.04 ·
190 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

State Monad in C++

一个C++版本的State Monad。 需要C++11。#include <functional>template<template<typename> class M> struct Monad { template<typename A> M<A> ret(A); template<...
转载
发布博客 2015.03.11 ·
223 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏