mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 12:45:39 +01:00
Add missing samples for msdax, postiats and sol
This commit is contained in:
parent
6ce435ec23
commit
f37e26bee5
12 changed files with 579 additions and 46 deletions
1
website/index/samples/sample.msdax.txt
Normal file
1
website/index/samples/sample.msdax.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
= CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))
|
||||
64
website/index/samples/sample.postiats.txt
Normal file
64
website/index/samples/sample.postiats.txt
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
// http://www.ats-lang.org/
|
||||
(* Say Hello! once *)
|
||||
val () = print"Hello!\n"
|
||||
//
|
||||
(* Say Hello! 3 times *)
|
||||
val () = 3*delay(print"Hello!")
|
||||
val () = print_newline((*void*))
|
||||
//
|
||||
|
||||
//
|
||||
(* Build a list of 3 *)
|
||||
val xs = $list{int}(0, 1, 2)
|
||||
//
|
||||
val x0 = xs[0] // legal
|
||||
val x1 = xs[1] // legal
|
||||
val x2 = xs[2] // legal
|
||||
val x3 = xs[3] // illegal
|
||||
//
|
||||
|
||||
//
|
||||
extern
|
||||
fun{} f0 (): int
|
||||
extern
|
||||
fun{} f1 (int): int
|
||||
extern
|
||||
fun{} repeat_f0f1 (int): int
|
||||
//
|
||||
implement
|
||||
{}(*tmp*)
|
||||
repeat_f0f1(n) =
|
||||
if n = 0
|
||||
then f0()
|
||||
else f1(repeat_f0f1(n-1))
|
||||
// end of [if]
|
||||
//
|
||||
fun
|
||||
times (
|
||||
m:int, n:int
|
||||
) : int = // m*n
|
||||
repeat_f0f1 (m) where
|
||||
{
|
||||
implement f0<> () = 0
|
||||
implement f1<> (x) = x + n
|
||||
}
|
||||
//
|
||||
fun
|
||||
power (
|
||||
m:int, n:int
|
||||
) : int = // m^n
|
||||
repeat_f0f1 (n) where
|
||||
{
|
||||
implement f0<> () = 1
|
||||
implement f1<> (x) = m * x
|
||||
}
|
||||
//
|
||||
val () =
|
||||
println! ("5*5 = ", times(5,5))
|
||||
val () =
|
||||
println! ("5^2 = ", power(5,2))
|
||||
val () =
|
||||
println! ("2^10 = ", power(2,10))
|
||||
val () =
|
||||
println! ("3^10 = ", power(3,10))
|
||||
//
|
||||
139
website/index/samples/sample.sol.txt
Normal file
139
website/index/samples/sample.sol.txt
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
pragma solidity ^0.4.11;
|
||||
|
||||
/// @title Voting with delegation.
|
||||
contract Ballot {
|
||||
// This declares a new complex type which will
|
||||
// be used for variables later.
|
||||
// It will represent a single voter.
|
||||
struct Voter {
|
||||
uint weight; // weight is accumulated by delegation
|
||||
bool voted; // if true, that person already voted
|
||||
address delegate; // person delegated to
|
||||
uint vote; // index of the voted proposal
|
||||
}
|
||||
|
||||
// This is a type for a single proposal.
|
||||
struct Proposal {
|
||||
bytes32 name; // short name (up to 32 bytes)
|
||||
uint voteCount; // number of accumulated votes
|
||||
}
|
||||
|
||||
address public chairperson;
|
||||
|
||||
// This declares a state variable that
|
||||
// stores a `Voter` struct for each possible address.
|
||||
mapping(address => Voter) public voters;
|
||||
|
||||
// A dynamically-sized array of `Proposal` structs.
|
||||
Proposal[] public proposals;
|
||||
|
||||
/// Create a new ballot to choose one of `proposalNames`.
|
||||
function Ballot(bytes32[] proposalNames) {
|
||||
chairperson = msg.sender;
|
||||
voters[chairperson].weight = 1;
|
||||
|
||||
// For each of the provided proposal names,
|
||||
// create a new proposal object and add it
|
||||
// to the end of the array.
|
||||
for (uint i = 0; i < proposalNames.length; i++) {
|
||||
// `Proposal({...})` creates a temporary
|
||||
// Proposal object and `proposals.push(...)`
|
||||
// appends it to the end of `proposals`.
|
||||
proposals.push(Proposal({
|
||||
name: proposalNames[i],
|
||||
voteCount: 0
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
// Give `voter` the right to vote on this ballot.
|
||||
// May only be called by `chairperson`.
|
||||
function giveRightToVote(address voter) {
|
||||
// If the argument of `require` evaluates to `false`,
|
||||
// it terminates and reverts all changes to
|
||||
// the state and to Ether balances. It is often
|
||||
// a good idea to use this if functions are
|
||||
// called incorrectly. But watch out, this
|
||||
// will currently also consume all provided gas
|
||||
// (this is planned to change in the future).
|
||||
require((msg.sender == chairperson) && !voters[voter].voted && (voters[voter].weight == 0));
|
||||
voters[voter].weight = 1;
|
||||
}
|
||||
|
||||
/// Delegate your vote to the voter `to`.
|
||||
function delegate(address to) {
|
||||
// assigns reference
|
||||
Voter sender = voters[msg.sender];
|
||||
require(!sender.voted);
|
||||
|
||||
// Self-delegation is not allowed.
|
||||
require(to != msg.sender);
|
||||
|
||||
// Forward the delegation as long as
|
||||
// `to` also delegated.
|
||||
// In general, such loops are very dangerous,
|
||||
// because if they run too long, they might
|
||||
// need more gas than is available in a block.
|
||||
// In this case, the delegation will not be executed,
|
||||
// but in other situations, such loops might
|
||||
// cause a contract to get "stuck" completely.
|
||||
while (voters[to].delegate != address(0)) {
|
||||
to = voters[to].delegate;
|
||||
|
||||
// We found a loop in the delegation, not allowed.
|
||||
require(to != msg.sender);
|
||||
}
|
||||
|
||||
// Since `sender` is a reference, this
|
||||
// modifies `voters[msg.sender].voted`
|
||||
sender.voted = true;
|
||||
sender.delegate = to;
|
||||
Voter delegate = voters[to];
|
||||
if (delegate.voted) {
|
||||
// If the delegate already voted,
|
||||
// directly add to the number of votes
|
||||
proposals[delegate.vote].voteCount += sender.weight;
|
||||
} else {
|
||||
// If the delegate did not vote yet,
|
||||
// add to her weight.
|
||||
delegate.weight += sender.weight;
|
||||
}
|
||||
}
|
||||
|
||||
/// Give your vote (including votes delegated to you)
|
||||
/// to proposal `proposals[proposal].name`.
|
||||
function vote(uint proposal) {
|
||||
Voter sender = voters[msg.sender];
|
||||
require(!sender.voted);
|
||||
sender.voted = true;
|
||||
sender.vote = proposal;
|
||||
|
||||
// If `proposal` is out of the range of the array,
|
||||
// this will throw automatically and revert all
|
||||
// changes.
|
||||
proposals[proposal].voteCount += sender.weight;
|
||||
}
|
||||
|
||||
/// @dev Computes the winning proposal taking all
|
||||
/// previous votes into account.
|
||||
function winningProposal() constant
|
||||
returns (uint winningProposal)
|
||||
{
|
||||
uint winningVoteCount = 0;
|
||||
for (uint p = 0; p < proposals.length; p++) {
|
||||
if (proposals[p].voteCount > winningVoteCount) {
|
||||
winningVoteCount = proposals[p].voteCount;
|
||||
winningProposal = p;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Calls winningProposal() function to get the index
|
||||
// of the winner contained in the proposals array and then
|
||||
// returns the name of the winner
|
||||
function winnerName() constant
|
||||
returns (bytes32 winnerName)
|
||||
{
|
||||
winnerName = proposals[winningProposal()].name;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue