是否有一个函数来连接列表的元素与分隔符?例如:
> foobar " " ["is","there","such","a","function","?"]
["is there such a function ?"]
Run Code Online (Sandbox Code Playgroud)
谢谢你的回复!
这可能是一个非常基本的问题,但......
一个被定义为的函数
foo :: a -> Integer
Run Code Online (Sandbox Code Playgroud)
表示从任何类型到整数的函数.如果是这样,那么理论上应该能够为任何类型定义它,就像这样
foo 1 = 10
foo 5.3 = 100
foo (x:xs) = -1
foo _ = 0
Run Code Online (Sandbox Code Playgroud)
但是Haskell只允许一般的定义,比如foo a = 0.
即使您限制a为某类类型之一,例如Show类型类的实例:
foo :: (Show a) => a -> Integer
Run Code Online (Sandbox Code Playgroud)
你仍然不能做类似的事情
foo "hello" = 10
foo _ = 0
Run Code Online (Sandbox Code Playgroud)
即使"hello" :: [Char]是一个实例Show
为什么会有这样的限制?
我正在寻找一些转储rtsp流的通用方法.我想弄清楚,一些rtsp流运行良好,服务器正在发送一些可观看的视频.
openRTSP
起初,谷歌推荐我openRTSP工具.
openRTSP -4 ${stream_link} > ${output_file}
Run Code Online (Sandbox Code Playgroud)
但是该工具转储的输出视频文件并不正确.视频解码器(ffdec)返回许多错误,如"无法解码视频数据包"和"[h264]无框架!",这些都不适合我.
ffmpeg的
然后我试图用ffmpeg工具转储rtsp流.
ffmpeg -loglevel debug -i "${stream_link}" -s 640x480 -vcodec copy -acodec copy -y ${output_file}
Run Code Online (Sandbox Code Playgroud)
但是流媒体过程经常被错误中断:
Application provided invalid, non monotonically increasing dts to muxer in stream 0: 730672 >= 730672
av_interleaved_write_frame(): Invalid argument
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用,--fflags igndts但ffmpeg不会忽略这些错误.它没有任何意义,因为该错误实际上意味着音频和视频流是异步发送的.最糟糕的是,由于中断转储导致的转储文件也不正确.Ffdec返回一些错误:
ERROR [mov,mp4,m4a,3gp,3g2,mj2] moov atom not found
ERROR [ffdec] av_open_input_file: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
经过一段精彩的谷歌搜索,我发现,这是一个非常古老的ffmpeg的muxer bug.
mplayer的
比我尝试使用mplayer和LIVE_555 lib.
mplayer -noframedrop -dumpfile ${output_file} -dumpstream ${stream_link}
Run Code Online (Sandbox Code Playgroud)
但我也有一些错误.
Stream not seekable!
Core dumped …Run Code Online (Sandbox Code Playgroud) 我经常有这种模式的功能:
f :: a -> b
f x = case x of
... -> g ...
... -> g ...
...
... -> g ...
where g = ...
Run Code Online (Sandbox Code Playgroud)
几乎在这种情况下有一种语法糖:
f :: a -> b
f ... = g ...
f ... = g ...
...
f ... = g ...
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法附上我where:我显然会得到一大堆not in scope.我可以创建g一个单独的函数,但它并不好:我的模块的命名空间将被实用程序函数污染.有没有解决方法?
是否有Linux等效的Win32 API _splitpath函数?
细节:
void _splitpath (
const char *path, // Path Input
char *drive, // Drive : Output
char *dir, // Directory : Output
char *fname, // Filename : Output
char *ext // Extension : Output
);
Run Code Online (Sandbox Code Playgroud)
它将完整路径作为输入,并将驱动器,目录,文件名和扩展名作为输出.
我正在设计一个C++应用程序,除其他外,它不时地执行一些脚本.该应用程序应该是高效的,并且最好是平台独
但问题是:有没有理由不应该使用system()call来启动脚本并使用例如POSIX设施?到目前为止我所看到的关于此事的讨论通常归结为:
system()不太灵活.(我都可以) system()吗?)Haskell有一个Data.Map模块,其中包括一个!函数.
fromList [(5,'a'), (3,'b')] ! 1 Error: element not in the map
fromList [(5,'a'), (3,'b')] ! 5 == 'a'
Run Code Online (Sandbox Code Playgroud)
虽然我可以将Data.Map模块中的其他函数导入到我的代码中......
import Data.Map(Map, keys, fromList)
Run Code Online (Sandbox Code Playgroud)
......以下不起作用......
import Data.Map(Map, keys, fromList, !)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
parse error on input `!'
Run Code Online (Sandbox Code Playgroud)
导入项目的正确语法是!什么?
假设我们有一个单子,通过定义return,(>>=)以及一套法律.有一种数据类型
newtype C m a = C { unC ? forall r. (a ? m r) ? m r }
Run Code Online (Sandbox Code Playgroud)
也称为密度.C m a ? m a鉴于这m是一个Monad,即我们可以编写两个函数to ? Monad m ? m a ? C m a和from ? Monad m ? C m a ? m a
to ? Monad m ? m a ? C m a
to t = C $ \f ? t …Run Code Online (Sandbox Code Playgroud) 我正在尝试运行此shell脚本,以便在Ubuntu框中安装RVM
#!/bin/bash
RVMHTTP="https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer"
CURLARGS="-f -s -S -k"
bash < <(curl $CURLARGS $RVMHTTP)
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误
语法错误:重定向意外
也测试了不使用变量,但结果相同,你能说出我错过了什么吗?
是否可以在Windows环境中使用Haskell捕获屏幕(或窗口)?(即每隔几分钟拍摄一次屏幕截图).如果是这样,怎么会这样做(再次,在Haskell中,对于Windows环境)?
更多信息:我是Haskell的初学者.一位朋友希望通过为我的会计师事务所鞭打一些程序来削减开发成本,但他坚持认为我使用的是Haskell.他想要一个能够监控不同Windows XP工作站桌面的工具.它可能必须是客户端/服务器类型的应用程序.他只需要监控桌面活动,因此他不想要任何已经上市的昂贵管理软件.我已经筛选了大量文档,并且只能找到wxHaskell,但我在捕获屏幕时找不到太多,特别是对于Windows环境.