Saturday, January 07, 2023

data: EV sales 2022

https://tridenstechnology.com/electric-car-sales-statistics/

Wuling Hongguang Mini EV - Wikipedia (#2 best selling EV after Tesla Model 3, $5K)

 Q3-2022-Kelley-Blue-Book-Electrified-Vehicle-Sales-Report.pdf

US electric vehicle sales by maker and EV model through Q3 2022 @electrek





Model 2022_Q3 2021_Q3 YOY_Q3 2022 2021 YOY Q2 YTD
Total EV & FCEV (Estimates) 205,854 123,514 67% 578,402 342,318 69.00%
Total (Estimates) 205,682 122,744 68% 576,408 339,671 69.70% 100% 100%
Tesla Model Y 60,271 50,430 20% 191,451 127,007 50.70% 29.30% 33.20%
Tesla Model 3 55,030 33,008 67% 156,357 80,388 94.50% 26.80% 27.10%
Ford Mustang Mach-E 10,414 5,880            - 28,089 18,855 49.00% 5.10% 4.90%
Tesla Model S 9,171 3,668 150% 23,464 13,043 79.90% 4.50% 4.10%
Chevy Bolt EV/EUV 14,709 4,515 226% 22,012 24,803 -11.30% 7.20% 3.80%
Tesla Model X 6,552 4,585 43% 19,542 16,783 16.40% 3.20% 3.40%
Hyundai Ioniq5 4,800               -            - 18,492               -            - 2.30% 3.20%
Kia EV6 4,996               -            - 17,564               -            - 2.40% 3.00%
Rivian R1T 5,991               -            - 11,581               -            - 2.90% 2.00%
VW ID.4 6,657 6,049 10% 11,072 12,279 -9.80% 3.20% 1.90%
Audi e-tron 2,799 909 208% 10,828 7,793 38.90% 1.40% 1.90%
Nissan Leaf 1,276 2,345 -46% 8,898 10,074 -11.70% 0.60% 1.50%
Ford F-150 Lightning 6,464               -            - 8,760               -            - 3.10% 1.50%
Polestar 2 2,852 832            - 6,548 1,091 500.20% 1.40% 1.10%
Mercedes EQS1 1,978               -            - 6,028               -            - 1.00% 1.00%
Porsche Taycan 1,325 1,861 -29% 5,774 7,228 -20.10% 0.60% 1.00%
Kia Niro 533 3,310 -84% 5,688 5,716 -0.50% 0.30% 1.00%
Ford E-Transit 1,379               -            - 4,387               -            - 0.70% 0.80%
BMW iX 1,727               -            - 3,155               -            - 0.80% 0.50%
Hyundai Kona  903 2,038 -56% 2,800 5,439 -48.50% 0.40% 0.50%
Mini Cooper  1,099 488 125% 2,615 1,226 113.30% 0.50% 0.50%
Volvo C40 339               -            - 2,138               -            - 0.20% 0.40%
Volvo XC40  12 1,598 -99% 2,127 3,927 -45.80% 0.00% 0.40%
Lucid Air 654               -            - 1,596               -            - 0.30% 0.30%
Toyota Mirai 79 671 -88% 1,437 2,268 -36.60%
Audi Q4 e-tron 1,112               -            - 1,112               -            - 0.50% 0.20%
Genesis GV60 807               -            - 1,040               -            - 0.40% 0.20%
GMC Hummer 411               -            - 782               -            - 0.20% 0.10%
Mercedes EQB 739               -            - 739               -            - 0.40% 0.10%
Rivian R1S 263               -            - 354               -            - 0.10% 0.10%
Rivian EDV700 346               -            - 346               -            - 0.20% 0.10%
Hyundia Nexo 74 62 19% 345 196 76.00%
Mazda MX-30 8               -            - 324               -            - 0.00% 0.10%
Jaguar I-Pace 22 229 -90% 290 884 -67.20% 0.00% 0.10%
Toyota BZ4X               -               -            - 232               -            - 0.00% 0.00%
Honda Clarity  19 37 -49% 212 183 15.80%
Brightdrop Zevo 600 / 400               -               -            - 155               -            - 0.00% 0.00%
Cadillac Lyric 36               -            - 36               -            - 0.00% 0.00%
Hyundai Ioniq  7 573 -99% 18 1,848 -99.00% 0.00% 0.00%
BMW i3               - 426 -100% 9 1,277 -99.30% 0.00% 0.00%
BMW i8               -               - 5 10 -50.00% 0.00% 0.00%

JavaScript function composition

JavaScript function composition: What’s the big deal? by James Sinclair

// We call our function c2, short for 'compose two functions together'. 
const c2 = (funcA, funcB) => x => funcA(funcB(x));


const compose = (...fns) => x0 => fns.reduceRight( (x, f) => f(x), x0 );


// We call this function 'flow' as the values flow, from left to right.
const flow = (...fns) => x0 => fns.reduce( (x, f) => f(x), x0 );


const pipe = (x0, ...fns) => fns.reduce( (x, f) => f(x), x0 );




const map = f => function*(iterable) { 
   for (let x of iterable) yield f(x); 
}; 

const filter = p => function*(iterable) { 
   for (let x of iterable) { 
       if (p(x)) yield x; 
   } 
}; 

const take = n => function*(iterable) { 
    let i = 0; 
    for (let x of iterable) { 
        if (i >= n) return; 
        yield x; 
        i++; 
    } 
}; 

const join = s => iterable => [...iterable].join(s);