Add missing Plutus builtins to Aiken's lang.
This commit is contained in:
parent
0838d48f7c
commit
00e9dabe82
|
@ -579,21 +579,65 @@ pub fn from_default_function(
|
|||
Some((tipo, 1))
|
||||
}
|
||||
DefaultFunction::ChooseData => {
|
||||
let tipo = function(vec![data(), data(), data(), data(), data(), data()], data());
|
||||
let a = generic_var(id_gen.next());
|
||||
let tipo = function(
|
||||
vec![
|
||||
data(),
|
||||
a.clone(),
|
||||
a.clone(),
|
||||
a.clone(),
|
||||
a.clone(),
|
||||
a.clone(),
|
||||
],
|
||||
a,
|
||||
);
|
||||
Some((tipo, 6))
|
||||
}
|
||||
|
||||
// Anything below has a direct syntax equivalent in Aiken, so
|
||||
// there's no need to support builtin for those.
|
||||
DefaultFunction::MkPairData => None,
|
||||
DefaultFunction::MkNilData => None,
|
||||
DefaultFunction::MkNilPairData => None,
|
||||
DefaultFunction::ChooseUnit => None,
|
||||
DefaultFunction::Trace => None,
|
||||
DefaultFunction::FstPair => None,
|
||||
DefaultFunction::SndPair => None,
|
||||
DefaultFunction::ChooseList => None,
|
||||
DefaultFunction::MkCons => None,
|
||||
DefaultFunction::MkPairData => {
|
||||
let tipo = function(vec![data(), data()], tuple(vec![data(), data()]));
|
||||
Some((tipo, 2))
|
||||
}
|
||||
DefaultFunction::MkNilData => {
|
||||
let tipo = function(vec![], list(data()));
|
||||
Some((tipo, 0))
|
||||
}
|
||||
DefaultFunction::MkNilPairData => {
|
||||
let tipo = function(vec![], list(tuple(vec![data(), data()])));
|
||||
Some((tipo, 0))
|
||||
}
|
||||
DefaultFunction::ChooseUnit => {
|
||||
let a = generic_var(id_gen.next());
|
||||
let tipo = function(vec![data(), a.clone()], a);
|
||||
Some((tipo, 2))
|
||||
}
|
||||
DefaultFunction::Trace => {
|
||||
let a = generic_var(id_gen.next());
|
||||
let tipo = function(vec![string(), a.clone()], a);
|
||||
Some((tipo, 2))
|
||||
}
|
||||
DefaultFunction::FstPair => {
|
||||
let a = generic_var(id_gen.next());
|
||||
let b = generic_var(id_gen.next());
|
||||
let tipo = function(vec![tuple(vec![a.clone(), b])], a);
|
||||
Some((tipo, 1))
|
||||
}
|
||||
DefaultFunction::SndPair => {
|
||||
let a = generic_var(id_gen.next());
|
||||
let b = generic_var(id_gen.next());
|
||||
let tipo = function(vec![tuple(vec![a, b.clone()])], b);
|
||||
Some((tipo, 1))
|
||||
}
|
||||
DefaultFunction::ChooseList => {
|
||||
let a = generic_var(id_gen.next());
|
||||
let b = generic_var(id_gen.next());
|
||||
let tipo = function(vec![list(a), b.clone(), b.clone()], b);
|
||||
Some((tipo, 3))
|
||||
}
|
||||
DefaultFunction::MkCons => {
|
||||
let a = generic_var(id_gen.next());
|
||||
let tipo = function(vec![a.clone(), list(a.clone())], list(a));
|
||||
Some((tipo, 2))
|
||||
}
|
||||
};
|
||||
|
||||
info.map(|(tipo, arity)| {
|
||||
|
|
|
@ -361,12 +361,12 @@ impl DefaultFunction {
|
|||
EncodeUtf8 => "encode_utf8",
|
||||
DecodeUtf8 => "decode_utf8",
|
||||
IfThenElse => "if_then_else",
|
||||
ChooseUnit => "choose_unit",
|
||||
Trace => "trace",
|
||||
ChooseUnit => "choose_void",
|
||||
Trace => "debug",
|
||||
FstPair => "fst_pair",
|
||||
SndPair => "snd_pair",
|
||||
ChooseList => "choose_list",
|
||||
MkCons => "mk_cons",
|
||||
MkCons => "cons_list",
|
||||
HeadList => "head_list",
|
||||
TailList => "tail_list",
|
||||
NullList => "null_list",
|
||||
|
|
Loading…
Reference in New Issue