stream失败

原创 2004年09月07日 22:29:00

看到SICP中在scheme上做了个很漂亮而且很可爱的stream,实在痒痒,准备用C++/Java来做一个。结果失败,实在郁闷。

C++自然免不了试试templates,虽然平时很讨厌这个东西——变异错误老长不说,没用到的函数还不检查,实在很烦人,不过做做玩具还是可以用用的。用C++的template之后,发现整个stream做完后,求值被分为两个阶段:先由comipler编译(部分求值,确定所有需要的计算),再运行程序,从而要取得stream中的第n个元素,前n个元素,这个n都必须是编译期给定的。这让我极为不快。后来又由于不能直接推导返回类型,一怒之下不做了。实在是做出来都没用的东西……(虽说本来就是玩具)

试试看Java吧,最初感觉挺好做,但有一个难点:delay(proc, arg1, arg2, ...)返回一个Promise,对这个Promise实用promise.eval()要得到proc(arg1, arg2, ...),但arg数目又是不定的……用讨厌的枚举(没参数到n参数)??然后proc又是一个Interface Functor然后一个个派生??太messy了吧!虽说C++就是这么做的,不过现成有个boost::function可用,倒也不费事,更好的是,delay可以用boost::bind来做,实在省力。这里倒好,都要重头来……可变参数在Java 1.5才有,我也懒得弄,况且要每个proc都自己处理检查argument types也不是什么很优雅的事情……不过至少这里是可行的,但由于太丑,也没做下去。

有朝一日可能会用C#/Java1.5来做吧,C++心血来潮也可能继续,再议再议,今天就到此为止了。

?

附录:有关上面提到的stream:

首先介绍一下scheme的基本语法:(proc arg1 arg2)就是以proc为函数名,arg1, arg2分别为参数,调用这个函数,表达式的值就是proc返回的值。(cons x y)就是返回一个(x, y)的二元组,而分别可用(car (cons x y))取得x, (cdr (cons x y))取得y。就这么多了,下面是原书关于stream的连接。

http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5

Kafka stream 开发碰到的问题:offset commit 失败 与 数据不准确

Kafka stream 开发碰到的问题:offset commit 失败 与 数据不准确
  • changtianshuiyue
  • changtianshuiyue
  • 2017-08-30 21:02:59
  • 715

java 读取excel 文件 Unable to recognize OLE stream 错误

使用 java 代码读取 excel 文件代码时报错如下: jxl.read.biff.BiffException: Unable to recognize OLE stream     at...
  • u011461420
  • u011461420
  • 2016-02-18 09:36:19
  • 1313

Unexpected end of ZLIB input stream的解决办法

在JDK1.6下使用Zip解压会出现Unexpected end of ZLIB input stream错误提示,在jdk1.7下一切正常,在官方也明确指出这是一个BUG,并在1.7中修复应该反复比...
  • qwfylwc
  • qwfylwc
  • 2017-01-17 10:07:25
  • 283

Stream.Write 方法

Stream.Write 方法 .NET Framework 4.5 其他版本 当在派生类中重写时,向当前流中写入字节...
  • songjunyan
  • songjunyan
  • 2014-06-12 00:02:49
  • 882

Protocol Buffers 中实现 ZeroCopyStream 来减少内存拷贝

http://name5566.com/2633.html 我们在序列化、反序列化 Protobuf message 时为了最小化内存拷贝,可以实现其提供的 ZeroCopyStream(包...
  • boyhailong
  • boyhailong
  • 2013-12-01 16:31:49
  • 1888

GetManifestResourceStream读取文件失败的解决办法

 这两天在SliverLight项目中碰到一个问题:项目中有一个XML文件,需要使用XMLReader将内容读取出来,使用如下代码:  Stream stream = this....
  • TheMoment_Rain
  • TheMoment_Rain
  • 2008-07-31 10:41:00
  • 2153

cuda内存处理及stream内存处理

CUDA内存拷贝 1、cudaMemcpy() cudaMalloc()  //线性内存拷贝 1 //线性内存拷贝 2 cudaMalloc((void**)&dev_A, data_si...
  • ZIV555
  • ZIV555
  • 2016-07-09 13:31:16
  • 603

Weex Android SDK源码分析之Module(stream)

前言modlue怎么能少得了网络请求尼(-_-),本篇博文介绍下Weex Moudle中的stream使用与源码分析~...
  • walid1992
  • walid1992
  • 2016-06-18 17:26:43
  • 5245

android: unexpected end of stream

一种“unexpected end of stream” 异常此异常在使用OkHttp下载文件时出现 特点1:必现; 特点2:不是一开始出现,多出现在下载结尾处,并且每一次位置相同 原因:htt...
  • zmscs
  • zmscs
  • 2016-11-08 20:31:10
  • 6096

Unexpected end of stream.

项目采用的是Codis集群部署,客户端jedis执行keys方法报如下错误: Exception in thread "main" redis.clients.jedis.exceptions.Jed...
  • Howie_zhw
  • Howie_zhw
  • 2016-07-15 09:36:37
  • 5646
收藏助手
不良信息举报
您举报文章:stream失败
举报原因:
原因补充:

(最多只允许输入30个字)