The first turtle graphic discussed in Mindstorms: Children, Computers, and Powerful Ideas by Seymour Papert is a simple drawing of a house. It is a square with a triangle on top for the roof.

For a slightly more advanced audience, a more practical introduction to turtle graphics might be to draw a bar chart.

See image here: https://i.imgur.com/B7YbTbZ.png

Task

 Create a function (or subroutine) that uses turtle graphics to draw a house of a specified size as described above. Optionally make it lovely by adding details such as, for example, doors and windows.
 Create a function (or subroutine) that takes a list (array, vector) of non-negative numbers and draws a bar chart from them, scaled to fit exactly in a square of a specified size. The enclosing square need not be drawn. 
 Both functions should return the turtle to the location it was at and facing in the same direction as it was immediately before the function was executed. 
import "dome" for Window
import "graphics" for Canvas, Color
import "./turtle" for Turtle
 
class Main {
    construct new(width, height) {
        Window.resize(width, height)
        Canvas.resize(width, height)
        Window.title = "Simple turtle graphics"
        _w = width
        _h = height
    }
 
    init() {
        Canvas.cls(Color.white)
        _t = Turtle.new()
        drawHouse(_w/4)
        barChart([15, 10, 50, 35, 20], _w/3)
    }
 
    drawHouse(size) {
        // save initial turtle position and direction
        var saveX = _t.x
        var saveY = _t.y
        var saveD = _t.dir
 
        _t.pen.width = 2
 
        // draw house
        _t.drawRect(_w/4, _h/2, size, size)
 
        // draw roof
        _t.right(30)
        _t.walk(size)
        _t.right(120)
        _t.walk(size)
 
        // draw door
        var doorWidth  = (size/4).floor
        var doorHeight = (size/2).floor
        _t.drawRect(_w/4 + doorWidth/2, _h/2 + doorHeight, doorWidth, doorHeight)
 
        // draw window
        var windWidth  = (size/3).floor
        var windHeight = (size/4).floor
        _t.drawRect(_w/4 + size/2, _h/2 + size/2, windWidth, windHeight)
 
        // restore initial turtle position and direction
        _t.x = saveX
        _t.y = saveY
        _t.dir = saveD
    }
 
    // nums assumed to be all non-negative
    barChart(nums, size) {
        // save intial turtle position and direction
        var saveX = _t.x
        var saveY = _t.y
        var saveD = _t.dir
 
        // find maximum
        var max = 0
        for (n in nums) if (n > max) max = n
 
        // scale to fit within a square with sides 'size' and draw chart
        var barWidth = (size / nums.count).floor
        var startX = _w / 2 + 20
        var startY = _h / 2
        for (i in 0...nums.count) {
            var barHeight = (nums[i] * size / max).round
            _t.drawRect(startX, startY - barHeight, barWidth, barHeight)
            startX = startX + barWidth
        }
 
        // restore intial turtle position and direction
        _t.x = saveX
        _t.y = saveY
        _t.dir = saveD
    }
 
    update() {}
 
    draw(alpha) {}
}
 
var Game = Main.new(600, 600)