在Haskell中,下面的代码打印“[1,2,3,4,5”:
foo = take 10 $ show $ numbersFrom 1 where
numbersFrom start = start : numbersFrom (start + 1) -- could use [1..]
但是在Frege中,它抛出OutofMemoryError
,代码如下:
foo = take 10 $ unpacked $ show $ numbersFrom 1 where
numbersFrom start = start : numbersFrom (start + 1)
这里唯一的区别是unpacked
函数,它是从string
转换为[Char]
和FWIW,unpacked
函数是热切的。为什么整个表达式不能像Haskell中那样懒惰呢?在这里有可能实现类似弗雷格哈斯克尔的东西吗?
我不知道Frege,但是根据语言定义string
是java.lang.string
,所以您不能构建无限长的字符串(内存不足的问题可能与unpack
过于急切无关)。
因为您知道numbersfrom 1
的每个元素将至少显示为1个字符,所以您可以过度近似要显示的列表大小,然后解压缩,然后取所需的字符数:
foo = take 10 $ unpacked $ show $ take 10 $ numbersFrom 1 where
numbersFrom start = start : numbersFrom (start + 1)
或者更一般地说:
n = 10 -- number of characters to show
m = 1 -- minimum (map (length . show) xs) for some type of xs
foo :: a -> [Char]
foo = take n . unpack . show . take ((n+m-1) `div` m) . someEnumeration
where
someEnumeration :: a -> [a]
someEnumeration = undefined
可以在一个集合/json? 使用者- 用户:id | name post:id |用户| id |文本 postimage: id|post_id|imgpath 用户模型: 帖子模式: 从用户处获取所有帖子工作正常: 我能够在一个循环内从帖子中获取所有图像 我想要的是得到所有的帖子,没有循环的图像,例如 谢啦
我有对象主位置和主国家/地区 MasterLocation.java 主位置存储库.java 为什么对象MasterCountries仍然加载在findByLocationNameLikeIgnoreCase上?如何在此存储库中禁用获取主国家/地区? 谢谢
我有一个问题,就是基于hasMany关系从数据库中获取数据并将其发送到Larave中的api。在下面的代码中,Laravel没有给我客户id=$id的产品。我不知道为什么,我不能在$query旁边发送$id。如果我把号码写在“我有很好的安全套,但我需要自动拿。 所有api代码 先谢谢你。
我对Haskell比较陌生,我正在努力找到一种实现Haskell的span函数的方法。然而,我的问题比这更一般,因为我不知道如何使函数返回包含所需元素的列表或元组列表。我对列表的问题,例如: 是我不能让函数在列表列表中的第一个列表中添加一个元素。我只知道如何将另一个列表附加到列表列表中。 简而言之,如果您向我解释如何实现span函数,我希望这一切都会清楚。
:101:22:ERROR:•在表达式“count words”的第一个参数中的“hello”中,即表达式:countWords[“hello”,“hello”,“world”]中的“[”hello“,”hello“,”world“]”中,无法将预期类型“Char”与实际类型“[Char]”匹配• :101:31:error:•在表达式“count words”的第一个参数中的“world”中,即