我经常听说函数式编程解决了许多在程序/命令式编程中难以解决的问题.但我也听说过程序编程自然很擅长的其他一些问题并不是很好.
在我打开关于Haskell的书并深入研究函数式编程之前,我至少想了解一下我能用它的基本概念(在本书的例子之外).那么,函数式编程擅长的是什么呢?它不适合的问题是什么?
到目前为止,我已经得到了一些很好的答案.我迫不及待地开始学习Haskell - 我只需要等到我掌握C :)
函数式编程很棒的原因:
函数式编程困难的领域:
有时数据结构应该具有某些无法在Java中直接描述的关系,但是在编辑代码时尽早检查是很好的.经典的例子是数组足够大或者不同模块中的枚举具有相应的成员.
BOOST在C++中提供了一个很好的"静态断言"工具,当断言失败时甚至可以提供一半的错误; 有谁知道如何在Java中构建编译时断言工具?
编辑:我刚看到一个完美的例子:来自Eclipse的这个类有两个常量数组,假设长度相同.如果这是我的代码,我希望编译器告诉我它们是否有不同的长度.
有没有办法NSDictionary从通过其description方法创建的字符串中获取回来?
鉴于此代码:
NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"value 1", @"value 2", nil] forKeys:[NSArray arrayWithObjects:@"key 1", @"key 2", nil]];
NSString *dictionaryString = [dictionary description];
NSLog(dictionaryString);
Run Code Online (Sandbox Code Playgroud)
这使得这个输出:
{
"key 1" = "value 1";
"key 2" = "value 2";
}
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以从字符串返回到NSDictionary?
是否有一些链接到F#的优秀资源:
我的意思很棒,类似于ASP.NET和WindowsClient.net的Learn部分中提供的视频.
谢谢.
我正在尝试编写一个C++模板函数,它将在不同整数类型之间的转换中抛出整数溢出的运行时异常,具有不同的宽度,以及可能的有符号/无符号不匹配.出于这些目的,我不关心从浮点类型转换为整数类型,也不关心其他对象到对象的转换.我想这样做而不必写很多特殊的案例代码.这就是我目前拥有的:
template< typename T, typename R > void safe_cast( const T& source, R& result )
{
// get the maximum safe value of type R
R rMax = (R) ~0;
if ( rMax < 0 ) // R is a signed type
{
// assume that we're on an 8-bit twos-compliment machine
rMax = ~( 0x80 << ( ( sizeof( R ) - 1 ) * 8 ) );
}
if ( ( source & rMax ) != source ) …Run Code Online (Sandbox Code Playgroud) 以下哪个正则表达式不能仅使用
|和*(Kleene star)和分组 的基本运算符转换为一个( () ) *
/adt[ui]t+\S?/
/b[^e]ac?h+\s\s\sBALL/i
/he{5}[Ly]+o\bwo[^r]L(?!d)/
/ab?c+(de{1,3})/
Run Code Online (Sandbox Code Playgroud)
管理高级程序员职位这是一个公平的问题吗?
我正在研究从SourceSafe到Subversion的潜在转变,我们正在努力进行编辑/合并/提交与checkout/update/checkin范式.主要关注的是如何知道哪些文件是使用Subversion(以及向谁)签出的?
在VSS中是否存在等同于"状态搜索"的Subversion?或者因为缺乏"保留结账"而无法实现?
另外,如果我们尝试通过"锁"实现Subversion的"保留检查",是否有支持"锁定结账"的GUI(TortoiseSVN,VirtualSVN等)?
谢谢.
更新:例如,在我们进行构建/发布之前,我们希望绝对确保所有文件都已签入.开发人员忘了.所以我们需要知道哪些文件已签出.这可能与Subversion有关吗? 是否可以查看签出(或锁定)文件的列表? 浏览资源管理器中的整个代码库是不可行的,是否有一些报表样式的列表或搜索功能?
我一直在研究处理大型固定宽度数据文件的几个Perl脚本,从每个数据记录中提取小的子串.我曾经想过,将子串的提取委托给方法调用会很昂贵,因为将数据记录复制到@_数组的开销很大.所以我运行以下来比较(a)直接调用substr(),(b)方法调用将数据记录作为字符串传递,以及(c)方法调用通过引用传递数据记录.
use strict;
use warnings;
use Benchmark qw(timethese);
my $RECORD = '0' x 50000;
my $direct = sub { my $v = substr( $RECORD, $_, 1) for 0..999 };
my $byVal = sub { my $v = ByVal ( $RECORD, $_) for 0..999 };
my $byRef = sub { my $v = ByRef (\$RECORD, $_) for 0..999 };
sub ByVal { return substr( $_[0], $_[1], 1) }
sub ByRef { return substr(${$_[0]}, $_[1], 1) }
timethese( 10000, {
direct => …Run Code Online (Sandbox Code Playgroud) 在定义上它们看起来是相同的,但是W3C认为它们具有不同的标签定义.之间有什么语义差别<acronym>和<abbr>语言学,HTML规范和解释方面.
一旦开始使用PowerShell,您就可能开始收集小而有用的脚本.妥善管理它们很棘手.