小编Lia*_*cre的帖子

伊德里斯:证明具体条款是不可能的

伊德里斯版: 0.9.16


我试图描述从base值和迭代step函数生成的构造:

namespace Iterate
  data Iterate : (base : a) -> (step : a -> a) -> a -> Type where
    IBase : Iterate base step base
    IStep : Iterate base step v -> Iterate base step (step v)
Run Code Online (Sandbox Code Playgroud)

使用这个我可以定义Plus,描述迭代添加jump值的构造:

namespace Plus
  Plus : (base : Nat) -> (jump : Nat) -> Nat -> Type
  Plus base jump = Iterate base (\v => jump + v)
Run Code Online (Sandbox Code Playgroud)

这个的简单示例用法:

namespace PlusExamples
  Even : …
Run Code Online (Sandbox Code Playgroud)

idris

6
推荐指数
1
解决办法
319
查看次数

Haskell中的迷你编程语言

我正在玩Haskell,并认为我会尝试用它创建一个简单的编程语言.暂时忽略具体语法; 我专注于抽象语法和语义.

语言当前应包含整数,整数加法,变量名和变量绑定块.

如果使用的是在使用范围内不存在的变量,则会引发错误.

以下是我目前的进展:

module ProgLang where
import Data.Map as Map

--  Classes
class Runnable d where
  run :: (Runnable a) => d -> Map String a -> Either [String] Integer

--  Data
data Name = Name String
  deriving (Eq, Ord, Show)

data Add a b = Add a b
  deriving (Eq, Ord, Show)

data Block a = Block (Map String a) a
  deriving (Eq, Ord, Show)

--  Instances
--  Integers resolve to Right Integer
instance Runnable Integer where …
Run Code Online (Sandbox Code Playgroud)

haskell semantics

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

标签 统计

haskell ×1

idris ×1

semantics ×1