我尝试过各种方法从Project Gutenberg文本中剥离许可证,用作语言学习项目的语料库,但我似乎无法想出一种无监督,可靠的方法.到目前为止,我提出的最好的启发式方法是剥离前二十八行和后一个398,它们适用于大量文本.关于我可以自动剥离文本的方法的任何建议(对于许多文本非常相似,但在每种情况下略有不同,以及一些不同的模板),以及如何验证该文本的建议文本已被准确删除,会非常有用.
为了节省空间和必须保持不同源之间数据一致性的复杂性,我正在考虑存储某些子串的开始/结束索引,而不是存储子串本身.诀窍是,如果我这样做,我可能会一直创建切片.这是要避免的吗?切片操作员是否足够快我不需要担心?新对象创建/销毁开销怎么样?
好的,我吸取了教训.除非您尝试修复一个真正的问题,否则不要进行优化.(当然这并不意味着对不必要的错误代码,但这不是重点......)另外,在堆栈溢出之前测试和配置文件.= D谢谢大家!
blazehtml教程和其他博客文章非常清楚如何使字符串文字工作.我有那个.但是,如何将字符串(字节串,Data.Text等也可以工作)通常用于元素的属性/内容.Blazehtml看起来很棒,但如果没有它,它似乎毫无用处.= P
这里是示例输出和代码来显示确切的问题:
{-# LANGUAGE OverloadedStrings #-}
import Prelude
import qualified Prelude as P
import Text.Blaze.Html5
import Text.Blaze.Html5.Attributes
import qualified Text.Blaze.Html5 as H
import qualified Text.Blaze.Html5.Attributes as A
makeLink dest cont = renderHtml $ a ! src dest $ cont
Run Code Online (Sandbox Code Playgroud)
*Main> let foo = "foo"
*Main> let bar = "bar"
*Main> makeLink foo bar
:1:9:
Couldn't match expected type `AttributeValue'
against inferred type `[Char]'
In the first argument of `makeLink', namely `foo'
In the expression: makeLink foo bar
In the … 我想创建一个脚本,当我将它连接到我的macbook pro时自动备份我的kindle文件.编写脚本完全符合我的能力,但我不知道在mount上自动运行脚本的最佳方法是什么.
修订概要
好吧,看起来系统调用肯定与GC有关,而潜在的问题只是GC经常发生.这似乎与splitWhen和pack的使用有关,我可以通过分析来判断.
splitWhen的实现将每个块从惰性文本转换为严格文本,并将它们连接起来,因为它构建了一个块缓冲区.这必然会分配很多.
pack,因为它从一种类型转换为另一种类型,必须分配,并且这是在我的内部循环中,所以这也是有意义的.
原始问题
我在基于haskell枚举器的IO中偶然发现了一些令人惊讶的系统调用活动.希望有人可以对此有所了解.
我一直在玩一个快速perl脚本的haskell版本,我曾经写过几个月,开启和关闭.该脚本从每一行读入一些json,然后打印出特定的字段(如果存在).
这是perl版本,以及我如何运行它.
cat ~/sample_input | perl -lpe '($_) = grep(/type/, split(/,/))' > /dev/null
Run Code Online (Sandbox Code Playgroud)
这是haskell版本(它与perl版本类似地调用).
{-# LANGUAGE OverloadedStrings #-}
import qualified Data.Enumerator as E
import qualified Data.Enumerator.Internal as EI
import qualified Data.Enumerator.Text as ET
import qualified Data.Enumerator.List as EL
import qualified Data.Text as T
import qualified Data.Text.IO as TI
import Data.Functor
import Control.Monad
import qualified Data.Text.Lazy as TL
import qualified Data.Text.Lazy.IO as TLI
import System.Environment
import System.IO (stdin, stdout)
import GHC.IO.Handle (hSetBuffering, BufferMode(BlockBuffering))
fieldEnumerator …Run Code Online (Sandbox Code Playgroud) 什么是::拉斯特语法,看到这里,意思是:
fn chunk(n: uint, idx: uint) -> uint {
let sh = uint::BITS - (SHIFT * (idx + 1));
(n >> sh) & MASK
}
Run Code Online (Sandbox Code Playgroud)
在像Haskell这样的语言中,它意味着一个类型提示,但是这里编译器已经有了一个值类型的注释,所以它似乎很可能是类型转换.
在过去的几天里,我一直在构建一个基本的实时评估javascript开发环境(我称之为WEPL.),并意识到能够将错误消息与行号相关联是件好事.不幸的是,eval()并没有提供一个很好的方法,我可以找到.
到目前为止我提出的解决方案是在eval()之前转换源,这样它就是一组嵌套调用eval()的包装器,它在eval之前记录一些信息,检查eval是否成功,以及然后使用该信息向用户输出更有用的故障排除信息.
我的问题是,为什么这可能是一个坏主意?我需要解决哪些问题才能确保效果良好?
我的意思是一种转变的例子,只是为了使这个具体化.
这个
if (cond) {
return foo + bar;
}
else {
return baz + quux;
}
Run Code Online (Sandbox Code Playgroud)
变成了这个
if (myEval('cond')) {
return myEval("myEval(\"foo\") + myEval(\"bar\")");
else {
return myEval("myEval(\"baz\") + myEval(\"quux\")");
}
Run Code Online (Sandbox Code Playgroud)
我显然没有包装最高级别,虽然我可以,而程序化版本会.
我遇到了一个似乎是由gcc没有找到随附的标头引起的问题.我不太了解C/GCC,我想我会检查编译器应该始终能够找到那些头是否安全.也许设置-I参数会覆盖这个?还是其他什么时髦的?
原始问题是在github上的鞋子这个问题.
嗨!我已经尝试在10.8上构建,使用非llvm gcc,如另一个问题所述,并通过调整rakefile来在正确的位置获取正确的sdk.
但
它仍然无法编译.
这是错误报告的开头(它真的很长)
Run Code Online (Sandbox Code Playgroud)new-host-2:shoes benjamingattet$ rake gcc -I. -c -o shoes/app.o -Wall -I/usr/local/include -I/usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.0.0 -I/usr/local/Cellar/ruby/1.9.3-p194/include/ruby-1.9.1 -I/usr/local/Cellar/ruby/1.9.3-p194/include/ruby-1.9.1/x86_64-darwin12.0.0 -O -DRUBY_1_9 -DSHOES_QUARTZ -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -fpascal-strings -Os -w -pipe -march=core2 -msse4.1 -mmacosx-version-min=10.8 -fno-common -x objective-c -fobjc-exceptions -isysroot /Developer/SDKs/MacOSX10.8.sdk -arch x86_64 shoes/app.c shoes/app.c:5:18: error: glib.h: No such file or directory In file included from shoes/app.c:6: ./shoes/app.h:13:19: error: cairo.h: No such file or directory In file included from /usr/local/Cellar/ruby/1.9.3-p194/include/ruby-1.9.1/ruby.h:32, from ./shoes/app.h:14, from shoes/app.c:6: /usr/local/Cellar/ruby/1.9.3-p194/include/ruby-1.9.1/ruby/ruby.h:48:21: error: string.h: …
有人可以展示如何在阅读器monad中使用snap monad吗?Monad变形金刚迷惑我.(或者,我很乐意接受有关monad变换器的教程的建议,以及查看光线的方法,并最终了解它们.)
编辑:糟糕; 忘了说明我实际上要做的事情,而不是寻求特定事情的帮助.战略,而不是战术.我特别希望在所有处理程序之间共享数据库连接/池,而不必在指定路由时显式传递该数据库连接/池.似乎读者monad将是实现这一目标的方法.
haskell ×3
c ×1
corpus ×1
daemon ×1
gcc ×1
ghc ×1
heuristics ×1
interpreter ×1
javascript ×1
macos ×1
monads ×1
mount ×1
nlp ×1
optimization ×1
performance ×1
python ×1
rust ×1
stripping ×1
syntax ×1
types ×1