小编Sim*_*ine的帖子

SML 中的模式匹配?

我只是想知道这里的 XL 变量是什么,它没有在任何地方声明?如果字符串不在列表中,则此函数返回 NONE。否则,返回原始字符串列表,但没有匹配的字符串。

fun same_string(s1 : string, s2 : string) =
    s1 = s2

fun all_except_option(s1: string, lst: string list) =
    case lst of
         [] => NONE
       | x::xl => if same_string(s1, x)    (* XL HERE ?? *)
                  then SOME xl
                  else case all_except_option(s1, xl) of
                            NONE => NONE
                          | SOME l => SOME (x::l)
Run Code Online (Sandbox Code Playgroud)

sml pattern-matching

4
推荐指数
1
解决办法
3821
查看次数

找到多项式的根

给定n次多项式,如何可靠地找到x = 0的所有x值.

我目前正在使用该Math.Polynomial库,它似乎没有内置此功能.但是,我可能在这里遗漏了一些东西,似乎这将是一个广泛使用的功能.

谢谢

haskell algebra polynomials

4
推荐指数
1
解决办法
289
查看次数

TCL相当于Python的`if __name__ =="__ main __"`

在一个可执行的TCL脚本中,我正在定义一个我想在另一个可执行的TCL脚本中导入的变量.在Python中,可以通过在一个脚本底部使用以下习语来组合库和可执行文件:

# Library

if __name__ == "__main__":
    # Executable that depends on library
    pass
Run Code Online (Sandbox Code Playgroud)

TCL有同等的东西吗?有Perl.

tcl

4
推荐指数
1
解决办法
252
查看次数

寻找棕榈星期天

棕榈星期日是复活节前的星期天.通过以下方式可以实现复活节周日:

use Time::Moment;
use Time::Moment::Adjusters qw(WesternEasterSunday PreviousDayOfWeek);

# 2018-04-01T00:00:00Z
my $easter_sunday = Time::Moment->new(year => 2018)->with(WesternEasterSunday);
Run Code Online (Sandbox Code Playgroud)

找到之前的星期日可以用Time::Moment::Adjusters'PreviousDayOfWeek(7):

$adjuster = PreviousDayOfWeek($day);
Run Code Online (Sandbox Code Playgroud)

$adjuster日期调整为日期之前的给定日期[1 =星期一,7 =星期日]的上一次出现.

但如果我申请这个调整员,我会在五天前得到一个星期二!

# 2018-03-27T00:00:00Z
my $palm_sunday = $easter_sunday->with(PreviousDayOfWeek(7))
Run Code Online (Sandbox Code Playgroud)

由于棕榈周日总是先于复活节周日七天我可以做到这一点Time::Momentminus_days(7),但因为我想找到一个数字,要简单得多发现使用其他假期的Time::Moment::Adjusters,我真的想找到这个意外的根行为.

perl datetime

4
推荐指数
1
解决办法
94
查看次数

在 SML 中将 int 转换为 real

SML的新手

我有以下代码返回列表的绝对值。我需要它的类型为 int list -> real list。我应该在哪里放置将其转换为实数的语句,同时将此代码限制为一行?

val myabs = map(fn x => if x >= 0 then x else ~x) [1,~2, 3, ~4];
Run Code Online (Sandbox Code Playgroud)

sml

4
推荐指数
1
解决办法
5699
查看次数

为什么这个 Hedgehog 生成器没有收缩得更快?

我制作了一个 Hedgehog 生成器,可以通过以下方式生成任意 256 位值:

genWord256 :: Gen Word256
genWord256 = do
  bytes <- Gen.integral (Range.linear 0 31)
  let lo = 2 ^ (8 * bytes)
      hi = 2 ^ (8 * (bytes + 1))
  pred <$> Gen.integral (Range.constant lo hi)
Run Code Online (Sandbox Code Playgroud)

让 size 参数决定数字中的字节数,我认为对我的应用程序很有意义。但是,评估此生成器如何缩小并应用于ceiling . logBase 2此,我的问题是:

为什么刺猬决定强调其初始结果的附近?我是否以某种方式误解了“不受大小参数影响的范围含义?( Range.constant) 我会认为这里的任何收缩都必须具有较少的位数。

?> Gen.print genWord256
=== Outcome ===
68126922926972638
=== Shrinks ===
112                 -- 7 bits
4035711763          -- 32 bits
106639875637011     -- 47 bits
281474976710655 …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-hedgehog

4
推荐指数
1
解决办法
69
查看次数

在树上的尾递归

我有一个数据结构,

datatype 'a tree = Leaf | Branch of 'a tree * 'a * 'a tree
Run Code Online (Sandbox Code Playgroud)

我想编写一个以某种顺序遍历此树的函数.无论它做什么都没关系,所以它可能是一个treefold : ('a * 'b -> 'b) -> 'b -> 'a tree -> 'b.我可以像这样编写这个函数:

fun treefold f acc1 Leaf = acc1
  | treefold f acc1 (Branch (left, a, right)) =
    let val acc2 = treefold acc1 left
        val acc3 = f (a, acc2)
        val acc4 = treefold acc3 right
    in acc4 end
Run Code Online (Sandbox Code Playgroud)

但是因为在最后一种情况下我不可避免地有两个分支,所以这不是尾递归函数.

是否有可能创建一个,因为允许扩展类型签名,并且成本是多少?我也想知道它是否值得尝试; 也就是说,它在实践中是否提供任何速度优势?

functional-programming sml

3
推荐指数
1
解决办法
967
查看次数

int - >('a - >'a)

我有一个问题,我遇到了研究SML.它要求返回类型为int - >('a - >'a).这就是我所做的:

- fn x:int => fn y => y;
val it = fn : int -> 'a -> 'a
Run Code Online (Sandbox Code Playgroud)

如何使返回类型为int - >('a - >'a)其中'a - >'a在括号中?任何帮助将不胜感激,我一直在尝试弄清楚它几个小时,在这里找不到任何相关的东西或在谷歌上搜索.

functional-programming ml sml

3
推荐指数
1
解决办法
58
查看次数

标准机器学习中命题逻辑公式的大小

我正在研究这个问题,其中命题逻辑公式表示为:

datatype fmla =
     F_Var of string
   | F_Not of fmla
   | F_And of fmla * fmla
   | F_Or of fmla * fmla 
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个返回命题逻辑公式大小的函数。命题变量的大小为 1;逻辑非的大小为 1 加上其子公式的大小;逻辑合取和逻辑析取的大小为 1 加上其子公式的大小。

我将如何尝试解决这个问题?

ml sml mosml

2
推荐指数
1
解决办法
471
查看次数

Mlton编译器无法正常工作(不提供任何输出)

在Ubuntu上安装了MLton编译器(sudo apt-get install mlton)并且在安装时没有任何问题(貌似).

当我尝试使用它(例如"mlton test.sml")时,它会停留一秒钟,然后什么也不返回.如果我尝试在我正在尝试编译的文件中打印某些东西,那就什么都没有.然而,奇怪的是如果我给它糟糕的ML代码("x = 2",没有val),它会吐出像"未定义变量"等常规错误.

我在这里和其他地方在网上看过,似乎并没有关注我正在经历的事情.也许我只是用错了?

提前致谢.

ml sml mlton

2
推荐指数
1
解决办法
77
查看次数